首页 > 解决方案 > gradlewAssembleRelease、gradlewInstallRelease 和 gradlew bundleRelease 有什么区别以及何时使用哪个?

问题描述

当我想将 Android 应用程序上传到 Play 商店时,我应该使用哪一个?

我已经尝试了上述方法,但我仍然对哪种方法最有效感到困惑?

./gradlew assembleRelease
./gradlew installRelease
./gradlew bundleRelease

我期望最好的方法来完成上述操作。

标签: javaandroidreact-nativekotlin

解决方案


您正在寻找的大部分答案都可以在这里找到

assembleDebug

这会使用调试变体为您的项目构建一个apk 。

这会在 project_name/module_name/build/outputs/apk/ 中创建一个名为 module_name-debug.apk 的 APK。该文件已使用调试密钥签名并与 zipalign 对齐,因此您可以立即将其安装在设备上。

installDebug

这会使用调试变体为您的项目构建一个apk,然后将其安装在连接的设备上

或者构建 APK 并立即将其安装在正在运行的模拟器或连接的设备上,而不是调用installDebug

assembleRelease

这会为您的应用创建一个发布apk 。然后,您需要使用命令行或在您的build.gradle(见下文)中设置签名详细信息对其进行签名,然后您可以使用adb.

通过命令行签署apk所涉及的步骤相当长,并且可能取决于您的项目的设置方式。可以在这里找到签名步骤

bundleRelease

这将创建一个版本aab,这是 Google 上传到 Play 商店的首选格式。

Android App Bundle 包含您应用的所有编译代码和资源,但会将 APK 生成和签名推迟到 Google Play。与 APK 不同,您不能将 app bundle 直接部署到设备上。因此,如果您想快速测试或与其他人共享 APK,则应改为构建 APK。

签署你的 apk/aab

您可以配置您的app/build.gradle,以便在您的构建完成后完成签名。

在你的app/build.gradle

android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            // You need to specify either an absolute path or include the
            // keystore file in the same directory as the build.gradle file.
            storeFile file("my-release-key.jks")
            storePassword "password"
            keyAlias "my-alias"
            keyPassword "password"
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            ...
        }
    }
}

您可以在此处阅读有关签署应用程序的更多信息

现在,当您通过调用 Gradle 任务构建应用程序时,Gradle 会为您的应用程序签名(并运行 zipalign)。

此外,由于您已经使用签名密钥配置了发布版本,因此“安装”任务可用于该版本类型。因此,您可以使用 installRelease 任务在模拟器或设备上构建、对齐、签名和安装发布 APK。

installRelease

您必须在上面设置签名才能在发布版本中使用。它与 相同,installDebug但它创建一个签名的版本变体并将其安装在连接的设备上。

用法

  • assembleRelease用来构建一个我想与其他人分享的apk 。
  • installRelease想在连接的设备上测试发布版本时使用。
  • bundleRelease在将我的应用程序上传到 Play 商店时使用。

推荐阅读