· react native · 4 min read

Hướng dẫn build apk file trên máy Ubuntu

Hướng dẫn cách cấu hình và build file .apk EAS Build, bao gồm các bước để tạo file .apk từ eas.json.

Hướng dẫn cách cấu hình và build file .apk EAS Build, bao gồm các bước để tạo file .apk từ eas.json.

Vấn đề

Các bài viết của expo về hướng dẫn cách build apk file trên local không được chi tiết từng bước nên sẽ gây khó khăn cho các bạn mới bắt đầu sử dụng Expo. Trong bài viết này mình sẽ hướng dẫn chi tiết từng bước để cài đặt và build apk file.

Các bước thiết lập môi trường trên Ubuntu

Trong bài viết này, mình sử dụng Ubuntu 22.04 để làm môi trường để build apk file. Ở thời điểm hiện tại, expo không hỗ trợ build apk trên Windows, do đó chúng ta chỉ có thể sử dụng Ubuntu để build. Để sử dụng Ubuntu có 2 cách, 1 là dùng WSL, 2 là tạo máy ảo, tùy sở thích của mỗi người có thể chọn một phương pháp khác nhau.

1. Cài đặt jdk-17 và các lệnh cần thiết khác

Để cài đặt jdk-17, bạn sử dụng lệnh sau:

sudo apt-get update
sudo apt-get upgrade
sudo apt install openjdk-17-jdk openjdk-17-jre

Sau khi cài xong, bạn có thể thử lại bằng lệnh sau:

java --version

Nếu bạn thấy kết quả như hình bên dưới thì nghĩa là đã thành công

openjdk 17.0.11 2024-04-16
OpenJDK Runtime Environment (build 17.0.11+9-Ubuntu-122.04.1)
OpenJDK 64-Bit Server VM (build 17.0.11+9-Ubuntu-122.04.1, mixed mode, sharing)

Ngoài ra, chúng ta sẽ cần cài thêm các tool như wget và unzip để thực hiện cho các bước sau:

sudo apt install wget unzip

2. Tải và cài đặt Command line tools

command-line-tools

Bạn có thể tải Command line tools tại link này. Lệnh bên dưới là ví dụ để cài command line tools

wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip

Sau khi tải xong, chúng ta sẽ tạo folder Android ngoài thư mục home của user.

mkdir -p ~/Android/Sdk/cmdline-tools
unzip commandlinetools-linux-11076708_latest.zip -d ~/Android/Sdk/cmdline-tools
mv ~/Android/Sdk/cmdline-tools/cmdline-tools ~/Android/Sdk/cmdline-tools/latest

Sau khi đã cài đặt xong, chúng ta cần thiết lập biến môi trường PATH cho command line tools bằng cách sửa file ~/.bashrc hoặc ~/.zshrc. Ở trong file này, bạn thêm những dòng sau vào cuối file.

export ANDROID_SDK_ROOT=$HOME/Android/Sdk
export PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin
export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools

Lúc này, bạn cần restart lại termial và kiểm tra xem config đã thành công hay chưa bằng lệnh sau:

sdkmanager --version

Sau khi cài đặt xong, ban có thể xóa file commandlinetools-linux-11076708_latest.zip bằng lệnh sau:

rm commandlinetools-linux-11076708_latest.zip

3. Cài đặt SDK Package

Khi build apk file, bạn sẽ cần tải SDK Package về, ví dụ như cho Android 10, 11, 12. Đầu tiên, bạn sẽ cần lấy danh sách các gói SDK bằng lệnh sau:

sdkmanager --list

Kết quả sẽ giống như bên dưới:

system-images;android-34;android-tv;arm64-v8a                                            | 3                 | Android TV ARM 64 v8a System Image                                   
system-images;android-34;android-tv;x86                                                  | 3                 | Android TV Intel x86 Atom System Image                               
system-images;android-34;aosp_atd;arm64-v8a                                              | 2                 | AOSP ATD ARM 64 v8a System Image                                     
system-images;android-34;aosp_atd;x86_64                                                 | 2                 | AOSP ATD Intel x86_64 Atom System Image                              
system-images;android-34;default;arm64-v8a                                               | 4                 | ARM 64 v8a System Image                                              
system-images;android-34;default;x86_64                                                  | 4                 | Intel x86_64 Atom System Image                                       
system-images;android-34;google-tv;arm64-v8a                                             | 3                 | Google TV ARM 64 v8a System Image                                    
system-images;android-34;google-tv;x86                                                   | 3                 | Google TV Intel x86 Atom System Image                                
system-images;android-34;google_apis;arm64-v8a                                           | 13                | Google APIs ARM 64 v8a System Image                                  
system-images;android-34;google_apis;x86_64                                              | 13                | Google APIs Intel x86_64 Atom System Image                           
system-images;android-34;google_apis_playstore;arm64-v8a                                 | 13                | Google Play ARM 64 v8a System Image                                  
system-images;android-34;google_apis_playstore;x86_64                                    | 13                | Google Play Intel x86_64 Atom System Image                           
system-images;android-34;google_atd;arm64-v8a                                            | 1                 | Google APIs ATD ARM 64 System Image                                  
system-images;android-34;google_atd;x86_64                                               | 1                 | Google APIs ATD Intel x86_64 Atom System Image                       
system-images;android-35;google_apis;arm64-v8a                                           | 6                 | Google APIs ARM 64 v8a System Image                                  
system-images;android-35;google_apis;x86_64                                              | 6                 | Google APIs Intel x86_64 Atom System Image                           
system-images;android-35;google_apis_playstore;arm64-v8a                                 | 6                 | Google Play ARM 64 v8a System Image                                  
system-images;android-35;google_apis_playstore;x86_64                                    | 6                 | Google Play Intel x86_64 Atom System Image

Để build expo trên Ubuntu, bạn sẽ cần cài các package sau:

sdkmanager --install "platform-tools" "platforms;android-35" "build-tools;35.0.0" "ndk;27.0.11902837"

3. Build thử trên môi trường vừa tạo

Để kiểm tra các cấu hình vừa thiết lập, ta có thể tạo một project mới từ đầu và build thử thông qua các lệnh sau:

npx create-expo-app

Trong thư mục dự án, chúng ta dùng lệnh sau để build:

eas build --platform android --local

Sau khi chạy xong lệnh trên, chúng ta sẽ có 1 file aab trong thư mục project. để build ứng dụng apk, đổi file eas.json để cài đặt build ra file apk và chạy lại lệnh build.

{
  "cli": {
    "version": ">= 10.1.1"
  },
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },
    "preview": {
      "distribution": "internal",
+     "android": {
+       "buildType": "apk"
+     }
    },
    "production": {}
  },
  "submit": {
    "production": {}
  }
}
eas build --platform android --local

Cuối cùng, chúng ta đã có môt file apk cho profile review.

Kết luận

Trong bài viết này, mình đã hướng dẫn cách build một ứng dụng React Native trên local trên HĐH Ubuntu. Bạn cũng có thể cấu hình tương tự để build trên MacOS.

Back to Blog