跳到主要内容

Android 打包

签名

.zshrc 中需要配置好

export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home
export PATH="/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home/bin/:$PATH"

然后执行下面的命令生成签名文件

keytool -genkeypair -v -storetype PKCS12 -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

my-upload-key.keystore 文件放在项目文件夹的 android/app 目录下。

编辑文件 ~/.gradle/gradle.propertiesandroid/gradle.properties ,并添加以下内容( * 替换为正确的密钥库密码、别名和密钥密码)

MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=*****
MYAPP_UPLOAD_KEY_PASSWORD=*****

需要完成的最后一个配置步骤是设置要使用上传密钥签名的发布版本。编辑项目文件夹中的文件 android/app/build.gradle ,并添加签名配置

...
android {
...
defaultConfig { ... }
signingConfigs {
release {
if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
storeFile file(MYAPP_UPLOAD_STORE_FILE)
storePassword MYAPP_UPLOAD_STORE_PASSWORD
keyAlias MYAPP_UPLOAD_KEY_ALIAS
keyPassword MYAPP_UPLOAD_KEY_PASSWORD
}
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
...

keystore 和 jks

在 Android 开发中,.keystore.jks 是两种常见的文件后缀,它们之间的区别在于:

.keystore文件:通常指的是密钥库文件,用于存储加密密钥、数字证书等安全相关的信息。.keystore文件可以包含多个密钥对和证书,并用于数字签名、加密通信等安全操作。在 Android 开发中,.keystore文件通常用于签署应用程序的 APK 文件,以确保应用的安全性和完整性。

.jks文件:.jks文件是 Java KeyStore 的缩写,是 Java 中用于管理密钥和证书的存储库文件格式。.jks文件通常用于存储密钥对、数字证书以及受信任的证书颁发机构(CA)证书。在 Android 开发中,.jks文件也用于签署应用程序的 APK 文件,以确保应用的安全性。

总的来说,.keystore文件和.jks文件都可以用于存储密钥和证书,用于应用程序的安全操作,但.jks文件更具体地指向 Java KeyStore 格式的密钥库文件。在实际使用中,这两种文件后缀可以互换使用,但.jks文件更常见于 Java 和 Android 开发领域。

编译

在 Android 开发中,gradlew 是用来执行 Gradle 任务的命令行工具,它是 Gradle Wrapper 的命令行接口。gradlew 的使用可以确保在不同的机器和环境中有一致的构建环境,因为它是与项目一起发布的,包含了所需的 Gradle 版本。

bundleReleaseassembleRelease 是 Android 构建过程中的两个不同的任务,它们都用于构建发布版本的 APK 或 App Bundle,但有一些关键的区别:

  1. assembleRelease:
    • 这个任务会生成一个或多个 APK 文件,这些 APK 是针对特定设备配置(如屏幕密度、ABI、语言等)优化的。
    • 生成的 APK 可以立即安装在设备上,或者上传到 Google Play 等应用商店。
    • 对于多 APK 发布,您需要为每种设备配置生成和上传一个 APK,这可能导致用户下载的 APK 体积较大。
  2. bundleRelease:
    • 这个任务会生成一个 App Bundle 文件(.aab 格式),这是一个包含所有应用程序代码和资源的优化容器。
    • 当上传到 Google Play 时,Google Play 会根据用户的设备配置动态地为用户生成和提供优化的 APK。
    • 使用 App Bundle 可以减少用户下载的 APK 体积,因为它只下载用户设备需要的资源和代码。
    • 它还支持动态功能模块,允许用户按需下载应用程序的部分功能。

总结来说,assembleRelease 适用于快速生成 APK 进行测试或发布,而 bundleRelease 更适合用于通过 Google Play 发布应用程序,因为它提供了更好的优化和更灵活的模块化支持。随着 Google Play 对 App Bundle 的支持越来越完善,推荐使用 bundleRelease 来构建和发布应用程序。