java - gradlewAssembleRelease、gradlewInstallRelease 和 gradlew bundleRelease 有什么区别以及何时使用哪个?
问题描述
当我想将 Android 应用程序上传到 Play 商店时,我应该使用哪一个?
我已经尝试了上述方法,但我仍然对哪种方法最有效感到困惑?
./gradlew assembleRelease
./gradlew installRelease
./gradlew bundleRelease
我期望最好的方法来完成上述操作。
解决方案
您正在寻找的大部分答案都可以在这里找到
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 商店时使用。
推荐阅读
- c++ - 如何在 D3D11 中设置 MSAA?
- javascript - React 不更新 HTML 或状态不同步
- react-native - react-native-modal 使背景平面列表可点击
- javascript - 在 D3 中转换 SVG 行时,会立即出现新行
- javascript - 未在新创建的 div 中复制的数据仅被复制的名称
- java - 静态变量永远不会更新
- spring - 本地化 Spring 麻烦隐藏的地方
- list - 在 List 中创建 List 的第一个元素 - Flutter、Dart
- docker - Selenium.WebDriverException:消息:未知错误:net::ERR_NAME_NOT_RESOLVED
- r - 在R中通过不同的row.names合并两个data.frames