Skip to content

Android 打包 - 打包 APK / AAB

打包 APK 和 AAB

在生成签名文件后,我们可以开始打包 React Native 应用。Android 应用有两种主要的打包格式:APK(Android Package Kit)和 AAB(Android App Bundle)。

步骤1:配置构建变体

  1. 编辑 android/app/build.gradle 文件: 确保构建配置正确,特别是 defaultConfig 部分:

    txt
    android {
      defaultConfig {
        applicationId "com.yourappname"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 1
        versionName "1.0"
      }
      // 其他配置...
    }
  2. 设置版本号

    • versionCode:整数,用于版本控制,每次发布新版本时递增
    • versionName:字符串,显示给用户的版本号

步骤2:打包 APK

APK 是传统的 Android 应用打包格式,适用于所有 Android 应用商店。

  1. 执行打包命令

    bash
    cd android
    ./gradlew assembleRelease
  2. 查找生成的 APK 文件: 打包完成后,APK 文件会生成在以下位置:

    android/app/build/outputs/apk/release/app-release.apk
  3. 验证 APK: 可以使用 zipalign 工具验证 APK 是否正确对齐:

    bash
    zipalign -v 4 app-release.apk app-release-aligned.apk
  4. 检查 APK 签名: 使用 apksigner 工具检查 APK 签名:

    bash
    apksigner verify --verbose app-release.apk

步骤3:打包 AAB

AAB(Android App Bundle)是 Google Play 推荐的新格式,可以减小应用体积并支持动态交付。

  1. 执行打包命令

    bash
    cd android
    ./gradlew bundleRelease
  2. 查找生成的 AAB 文件: 打包完成后,AAB 文件会生成在以下位置:

    android/app/build/outputs/bundle/release/app-release.aab
  3. 验证 AAB: 可以使用 bundletool 工具验证 AAB:

    bash
    bundletool validate --bundle=app-release.aab

步骤4:优化构建配置

  1. 启用代码混淆: 在 android/app/build.gradle 文件中启用 ProGuard 代码混淆:

    txt
    android {
      buildTypes {
        release {
          minifyEnabled true
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
      }
    }
  2. 配置 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.**
  3. 启用资源优化

    txt
    android {
      buildTypes {
        release {
          shrinkResources true
        }
      }
    }

步骤5:构建调试版本(可选)

如果需要测试发布版本的行为,可以构建调试版本:

  1. 构建调试版本

    bash
    ./gradlew assembleDebug
  2. 安装调试版本

    bash
    adb install app/build/outputs/apk/debug/app-debug.apk

步骤6:自动化构建(可选)

对于持续集成/持续部署(CI/CD),可以使用以下命令:

  1. 清理构建目录

    bash
    ./gradlew clean
  2. 构建发布版本

    bash
    ./gradlew assembleRelease
  3. 构建 AAB

    bash
    ./gradlew bundleRelease

注意事项

  1. 构建时间

    • 第一次构建可能需要较长时间,因为需要下载依赖
    • 后续构建会使用缓存,速度会更快
  2. 内存要求

    • 构建过程需要较多内存,建议分配至少 4GB 内存给 Gradle
    • 可以在 gradle.properties 文件中设置:
      properties
      org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
  3. 构建错误

    • 如果遇到构建错误,检查依赖版本是否兼容
    • 确保所有必要的权限和配置都已正确设置
  4. 应用大小

    • 启用代码混淆和资源优化可以减小应用体积
    • 考虑使用 AAB 格式,Google Play 会为不同设备生成优化的 APK

常见问题

  1. 构建失败

    • 检查 Gradle 版本是否兼容
    • 检查依赖是否有冲突
    • 检查签名配置是否正确
  2. APK 安装失败

    • 检查设备是否允许安装未知来源的应用
    • 检查应用的 minSdkVersion 是否与设备兼容
    • 检查签名是否正确
  3. 应用崩溃

    • 检查 ProGuard 规则是否正确
    • 检查是否有未处理的异常
    • 检查权限是否正确设置
  4. 构建速度慢

    • 启用 Gradle 守护进程
    • 增加 Gradle 内存分配
    • 使用增量构建

总结

打包 APK 和 AAB 是 Android 应用发布的关键步骤。通过正确配置构建选项,优化应用大小,并确保签名正确,可以生成高质量的应用包,为用户提供良好的体验。

选择哪种格式:

  • APK:适用于所有 Android 应用商店,兼容性好
  • AAB:Google Play 推荐,可减小应用体积,支持动态交付

© 2026 编程马·菜鸟教程 版权所有