Gradle Cheat Sheet (18): Adding a Signing Configuration

  给App签名需要三个步骤:首先需要创建一个Key Store和一个Key;然后在build.gradle中创建一个签名配置,主要用于描述如何访问keystore和key;最后要把这个签名配置指定给Build Type。

1. 创建Key Store和Key

  选择Build > Generate Signed APK…,打开Generate Signed APK向导,首先需要选择要签名module,这里就选择app,如图1。然后点击next。

图1

图1

  点击Create new…新建Key Store。Key store path选择当前工程目录,命名为keystore.jks,然后为Key Store设定Password,为Key设定Alias和Password,并填写Certificate下的内容,如图2。然后点击OK。

图2

图2

  此时Key Store已经创建完毕,可以直接关闭Generate Signed APK向导。可以在工程根目录下找到keystore.jks文件。

2. 创建Signing Configuration

  右键点击app目录,选择Open Module Settings,打开Signing页面,点击“+”按钮创建新Configuration,命名为defaultConfig,Store File选择上一步创建的keystore.jks,并填写剩余项目,如图3。

图3

图3

  然后就可以在/app/build.gradle中找到对应的Configuration:

    signingConfigs {
        defaultConfig {
            keyAlias 'mykeystore'
            keyPassword '12345678'
            storeFile file('/Users/nex3z/Workspace/MySignedApp/keystore.jks')
            storePassword '12345678'
        }
    }

注意这里storeFile 默认使用绝对路径,可以通过rootDir 来使用相对路径:

storeFile file("$rootDir/keystore.jks")

3. 添加Signing Configuration到Build Type

  右键点击app目录,选择Open Module Settings,打开Build Types页面,在左侧选择release,点击Signing Config下拉菜单,选择上一步创建的defaultConfig,如图4。

图4

图4

  点击OK后,就可以在/app/build.gradle中看到在release 下多出了signingConfig signingConfigs.defaultConfig :

    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.defaultConfig
    }

4. 确认签名成功

  运行:

$ ./gradlew assemble

然后运行:

$ unzip -l app/build/outputs/apk/app-release.apk

签名包含在最后的两个文件中:

    36776  06-17-16 22:33   META-INF/CERT.SF
     1086  06-17-16 22:33   META-INF/CERT.RSA