如何通过命令行签署apk

Aha*_*ain 6 android apk signed-apk

请注意,我们已经在Android SDK的帮助下通过命令行创建了一个apk文件.现在,因为上传到谷歌播放商店需要apk签名.我们该怎么做

bor*_*man 14

按照以下命令使 apk Play 商店准备就绪:

第 1 步:创建一个未签名的 apk:

./gradlew assembleRelease
Run Code Online (Sandbox Code Playgroud)

第 2 步:创建一个签名的 apk:

jarsigner -keystore YOUR_KEYSTORE_PATH -storepass YOUR_KEYSTORE_PASSWORD app/build/outputs/apk/release/app-release-unsigned.apk YOUR_KEY_ALIAS
Run Code Online (Sandbox Code Playgroud)

第 3 步:对 apk 进行压缩对齐:

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
Run Code Online (Sandbox Code Playgroud)

  • 请注意:[如果您使用 apksigner,则只能在 APK 文件签名之前**执行 zipalign。](https://developer.android.com/studio/command-line/zipalign) (2认同)

小智 10

步骤1

首先,您需要生成私有签名密钥

keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
Run Code Online (Sandbox Code Playgroud)

此命令将提示您输入密钥库和密钥的密码(也适用于其他一些字段).请记住随时保持密钥库文件的私密性.

第2步

接下来,您需要设置gradle

  1. my-release-key.keystore您在步骤1中生成的地方android/app
  2. 更新你的~/.gradle/gradle.properties下面android/app并添加以下内容

    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>
    
    Run Code Online (Sandbox Code Playgroud)

第3步

最后你需要更新你的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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,只需在android目录中运行以下命令,即可通过命令行生成签名版本

./gradlew assembleRelease
Run Code Online (Sandbox Code Playgroud)

然后可以在您的build/outputs/apk/release目录下找到生成的apk .


Kal*_*aju 7

  1. 首先,您需要一个密钥库来开始该过程。您将使用此密钥库对apk进行签名,并且您需要使用相同的密钥库进行签名以进行将来的更新。在此处了解有关密钥库的更多信息:https : //developer.android.com/studio/publish/app-signing#generate-key

  2. 生成密钥库后,您应该使用jarsigner实用程序(在JDK文件夹中可用)

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore your-release-key.keystore android-release-unsigned.apk alias -storepass password
Run Code Online (Sandbox Code Playgroud)
  1. 下一步是使用zipalign工具(位于android SDK文件夹中)来验证apk。
path-to-android-sdk/build-tools/version/zipalign -v 4 android-release-unsigned.apk android-prod-released-signed.apk
Run Code Online (Sandbox Code Playgroud)
  1. 最后一步是使用apksigner工具进行验证(可在android SDK文件夹中找到)
path-to-android-sdk/build-tools/version/apksigner verify android-prod-released-signed.apk
Run Code Online (Sandbox Code Playgroud)

PS:用实际值替换路径,文件和密码