Android应用签名打包

给你的Android应用签名

Android要求所有的应用在安装之前需要进行数字证书的签名,Android利用数字证书给来识别应用程序的作者,并且证书不需要由证书颁发机构进行签名。Android应用程序通常使用自签名证书。该应用的程序开发者持有证书的私钥。

签名概览

你可以在debug或者release模式下进行签名。你可以在开发期间在debug模式下对应用进行签名或者将要发布应用时在release模式下对你的应用进行签名。Android SDK在debug模式下生成一个证书对应用进行签名。为了在release模式下对应用签名,你需要生成自己的证书。

Debug模式下签名

在debug模式下,你使用Android SDK tools生成的证书对应用进行签名。这个证书拥有一个私钥和一个公钥,因此你可以在每次更改项目的时候不需要指定密码就可以运行和debug(调试)你的App。

当你通过IDE运行或者调试应用的时候,Android Studio在Debug模式下自动对你的应用进行签名。

你可以运行或者调试一个签名的app在debug模式下通过模拟机或者用USB链接到你的开发机上,但是你不能把debug模式下签名的app发布。

默认的情况下,debug配置使用一个debug keystore,通过公钥和默认已知的密码。debug keystore位于

$HOME/.android/debug.keystore

并且在不存在时创建。debug 构建类型自动配置为使用debug SigningConfig。

若想要获得关于在debug模式下构建和运行app的信息,请参见 Building and Running

Release模式下签名

在release模式,你需要用自己证书对你的app进行签名。

  1. 创建keystore:keystore是一个包含一些列私钥的二进制文件,你必须保证你的keystore存储在一个安全的地方。
  2. 创建私钥:一个私钥代表应用被识别,例如一个人或者公司实体。
  3. 在app modlue的build文件中添加signing configuration:
    ...
    android {
     ...
     defaultConfig { ... }
     signingConfigs {
         release {
             storeFile file("myreleasekey.keystore")
             storePassword "password"
             keyAlias "MyReleaseKey"
             keyPassword "password"
         }
     }
     buildTypes {
         release {
             ...
             signingConfig signingConfigs.release
         }
     }
    }
    ...
    
  4. 在Android Studio中调用
    assembleRelease
    构建任务。
    在包
    app/build/apk/app-release.apk
    中会用你的release key签名应用。

    注意:在build file(构建文件)中包含你的release key密码和keystore不是一个良好的安全习惯,你可以配置build file去获取在环境变量中的密码或者构建过程中输入密码。

从环境变量中获取密码:


storePassword System.getenv(“KSTOREPWD”)
keyPassword System.getenv(“KEYPWD”)

在构建过程中提示你输入密码,如果你在命令行模式下构建:


storePassword System.console().readLine(“\nKeystore password: “)
keyPassword System.console().readLine(“\nKey password: “)

完成这些步骤后你可以在Google Play中发布你的应用。

警告:把你的keystore和私钥放置在一个安全的地方,并且确保你有一个安全的备份。如果你发布一个app到Google Play并且失去了你签名app的key,你将不能发布更新你的app,因为你必须签名所有版本的app用相同的key。

接下来将会详细的介绍如何生成私钥和通过Android Studio签名你的app。

在Android Studio中签名你的app

为了在release模式下签名你的app,请遵循以下步骤:

  1. 在菜单栏上,点击Build>Generate Signed APK

  2. 在Generate Signed APK向导窗口中,点击Create new 创建新的keystore,如果你已经有了一个ksystore请转向第4步。

  1. 在New Key Store窗口,在图1中提供了必要的信息。你的key需要至少在25年验证,所以你可以签名app更新用同样的key通过你的app 生命周期。

    figure1

    图1:在Android Studio中创建keystore

  2. 在Generate Signed APK 向导窗口,选择一个keysore,一个私钥,并且输入密码,然后点击Next.

    图2

    图2:在Android Studio上选择一个私钥

  3. 在下一个窗口为签名的APK选择一个目标并且点击finish.

    图3

    图3:在Android Studio中生成签名apk

自动签名你的app

在Android Studio中,在构建的过程中你可以配置你的project去自动签名release APK。

  1. 在项目浏览器中,右点击你的app并且Open Modules Settings.

  2. 在Project Structure 窗口,在Modules中选择你的app module.

  3. 点击Signing tab

  4. 选择你的keystore文件,为signing configuration输入名字并且输入必要的信息。

    图4

    图4:创建一个signing configuration

  5. 点击Build Types tab.

  6. 选择 release 构建

  7. 在Signing Config,选择你刚刚创建的signing configuration

    图5
    图5:选择signing configuration

  8. 点击OK

你也可以在Gradle configuration 文件中指定你的签名配置,更多信息请查看 Configuring Gradle