· 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.
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
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.