Appearance
Android 打包 - 打包 APK / AAB
打包 APK 和 AAB
在生成签名文件后,我们可以开始打包 React Native 应用。Android 应用有两种主要的打包格式:APK(Android Package Kit)和 AAB(Android App Bundle)。
步骤1:配置构建变体
编辑
android/app/build.gradle文件: 确保构建配置正确,特别是defaultConfig部分:txtandroid { defaultConfig { applicationId "com.yourappname" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 versionName "1.0" } // 其他配置... }设置版本号:
versionCode:整数,用于版本控制,每次发布新版本时递增versionName:字符串,显示给用户的版本号
步骤2:打包 APK
APK 是传统的 Android 应用打包格式,适用于所有 Android 应用商店。
执行打包命令:
bashcd android ./gradlew assembleRelease查找生成的 APK 文件: 打包完成后,APK 文件会生成在以下位置:
android/app/build/outputs/apk/release/app-release.apk验证 APK: 可以使用
zipalign工具验证 APK 是否正确对齐:bashzipalign -v 4 app-release.apk app-release-aligned.apk检查 APK 签名: 使用
apksigner工具检查 APK 签名:bashapksigner verify --verbose app-release.apk
步骤3:打包 AAB
AAB(Android App Bundle)是 Google Play 推荐的新格式,可以减小应用体积并支持动态交付。
执行打包命令:
bashcd android ./gradlew bundleRelease查找生成的 AAB 文件: 打包完成后,AAB 文件会生成在以下位置:
android/app/build/outputs/bundle/release/app-release.aab验证 AAB: 可以使用
bundletool工具验证 AAB:bashbundletool validate --bundle=app-release.aab
步骤4:优化构建配置
启用代码混淆: 在
android/app/build.gradle文件中启用 ProGuard 代码混淆:txtandroid { buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }配置 ProGuard 规则: 在
android/app/proguard-rules.pro文件中添加必要的规则,确保 React Native 相关代码不被混淆:# React Native -keep class com.facebook.react.** { *; } -dontwarn com.facebook.react.** # OkHttp3 -keep class okhttp3.** { *; } -keep interface okhttp3.** { *; } -dontwarn okhttp3.** # Okio -keep class okio.** { *; } -dontwarn okio.** # Gson -keep class com.google.gson.** { *; } -dontwarn com.google.gson.**启用资源优化:
txtandroid { buildTypes { release { shrinkResources true } } }
步骤5:构建调试版本(可选)
如果需要测试发布版本的行为,可以构建调试版本:
构建调试版本:
bash./gradlew assembleDebug安装调试版本:
bashadb install app/build/outputs/apk/debug/app-debug.apk
步骤6:自动化构建(可选)
对于持续集成/持续部署(CI/CD),可以使用以下命令:
清理构建目录:
bash./gradlew clean构建发布版本:
bash./gradlew assembleRelease构建 AAB:
bash./gradlew bundleRelease
注意事项
构建时间:
- 第一次构建可能需要较长时间,因为需要下载依赖
- 后续构建会使用缓存,速度会更快
内存要求:
- 构建过程需要较多内存,建议分配至少 4GB 内存给 Gradle
- 可以在
gradle.properties文件中设置:propertiesorg.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
构建错误:
- 如果遇到构建错误,检查依赖版本是否兼容
- 确保所有必要的权限和配置都已正确设置
应用大小:
- 启用代码混淆和资源优化可以减小应用体积
- 考虑使用 AAB 格式,Google Play 会为不同设备生成优化的 APK
常见问题
构建失败:
- 检查 Gradle 版本是否兼容
- 检查依赖是否有冲突
- 检查签名配置是否正确
APK 安装失败:
- 检查设备是否允许安装未知来源的应用
- 检查应用的
minSdkVersion是否与设备兼容 - 检查签名是否正确
应用崩溃:
- 检查 ProGuard 规则是否正确
- 检查是否有未处理的异常
- 检查权限是否正确设置
构建速度慢:
- 启用 Gradle 守护进程
- 增加 Gradle 内存分配
- 使用增量构建
总结
打包 APK 和 AAB 是 Android 应用发布的关键步骤。通过正确配置构建选项,优化应用大小,并确保签名正确,可以生成高质量的应用包,为用户提供良好的体验。
选择哪种格式:
- APK:适用于所有 Android 应用商店,兼容性好
- AAB:Google Play 推荐,可减小应用体积,支持动态交付
