请注意,我们已经通过命令行使用Android SDK创建了一个apk文件。现在,由于将其上传到Google Play商店需要对apk进行签名。我们该如何做呢?
请注意,我们已经通过命令行使用Android SDK创建了一个apk文件。现在,由于将其上传到Google Play商店需要对apk进行签名。我们该如何做呢?
首先,您需要一个密钥库来开始这个过程。您将使用此密钥库对您的apk进行签名,并且您需要使用同一密钥库进行未来的更新签名。在此处了解有关密钥库的更多信息:https://developer.android.com/studio/publish/app-signing#generate-key
生成密钥库后,您应该使用jarsigner
实用工具(可在JDK文件夹中找到)。
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore your-release-key.keystore android-release-unsigned.apk alias -storepass password
zipalign
工具(位于Android SDK文件夹中)验证apk。path-to-android-sdk/build-tools/version/zipalign -v 4 android-release-unsigned.apk android-prod-released-signed.apk
apksigner
工具(Android SDK文件夹中可用)进行验证。path-to-android-sdk/build-tools/version/apksigner verify android-prod-released-signed.apk
提示:将路径、文件名和密码替换为实际值
首先,您需要生成一个私钥签名密钥。
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
这个命令会提示您输入密钥库和密钥的密码(以及其他一些附加信息)。请记得随时保持您的密钥库文件私有。
接下来,您需要设置gradle
my-release-key.keystore
放置在android/app
目录下更新位于android/app
下的~/.gradle/gradle.properties
并添加以下内容
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=<The password you choose earlier with the keytool>
MYAPP_RELEASE_KEY_PASSWORD=<The password you choose earlier with the keytool>
最后,您需要更新android/app/build.gradle
。
android {
...
defaultConfig { ... }
signingConfigs {
release {
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
}
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
现在您可以通过在Android目录中运行以下命令来简单生成签名的发布版
./gradlew assembleRelease
生成的apk文件会出现在build/outputs/apk/release
目录下。C:\Program Files\Java\jdkx.x.x_x\bin
运行密钥工具。 - jomis请按照以下步骤使apk能够在Play商店上使用:
步骤1:创建未签名的apk:
./gradlew assembleRelease
步骤二:创建已签名的APK文件:
jarsigner -keystore YOUR_KEYSTORE_PATH -storepass YOUR_KEYSTORE_PASSWORD app/build/outputs/apk/release/app-release-unsigned.apk YOUR_KEY_ALIAS
第三步:对apk进行Zipalign操作:
your_android-sdk_path/android-sdk/build-tools/your_build_tools_version/zipalign -v 4 app/build/outputs/apk/release/app-release-unsigned.apk release.apk
以防将来有用。
从安卓开发者doc中记住:
如果你想要通过命令行签署一个应用程序包,你可以使用jarsigner。如果你想要签署一个APK,你需要像下面描述的那样使用zipalign和apksigner。
所以对于一个apk:
对齐:$.\zipalign.exe -v -p 4 'C:\Users\User\Downloads\unsigned.apk' 'C:\Users\User\Downloads\aligned.apk'
签名:$.\apksigner.bat sign --ks 'C:\Keystores\my.keystore' --out 'C:\Users\User\Downloads\signed.apk' 'C:\Users\User\Downloads\aligned.apk'
对于aab文件: