Android Gradle 插件中文指南

3.4.3 签名配置

要对一个应用签名,要求如下:

  • 一个 keystore
  • 一个 keystore 的密码
  • 一个 key 的别名
  • 一个 key 的密码
  • 存储类型

位置、key 别名、key 密码以及存储类型一起组成了签名配置( SigningConfig 类型)

默认情况下, 已经有了一个 debug 的签名配置,它使用了 debug keystore,该 keystore 有一个已知的密码和默认的带有已知密码的 key。 debug keystore 位于$HOME/.android/debug.keystore,如果没有会被创建。

debug Build Type 被设置为自动使用 debug 签名配置。

你也可以创建其他的签名配置或者自定义内置的配置。可以通过 signingConfigs DSL容器实现。

android {
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {ss
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }

    buildTypes {
        foo {
            debuggable true
            jniDebuggable true
            signingConfig signingConfigs.myConfig
        }
    }
}

以上片段会把 debug keystore 的路径改为工程的根目录。这会自动的影响任何用到它的 Build Types ,在这里影响到的是 debug Build Type

以前片段也创建了一个新的签名配置,并且被一个新的 Build Type 使用。

注意: 只有默认路径下的 debug keystores 才会被自动创建。如果改变了 debug keystore 的路径将不会在需要的时候创建。创建一个使用不同名字的 SigningConfig ,但是用的是默认的 debug keystore 路径的话是会被自动创建的。也就是说,会不会被自动创建,和 keystore 的路径有关,和配置的名字无关。

说明: 通常情况下,会使用工程根目录的相对路径作为 keystores 的路径,但有时候也会用绝对路径,虽然这并不推荐(被自动创建的 debug keystore 除外)。

注意:如果已经你将这些文件放到版本控制中,你可能不想把密码存储在文件中。Stack Overflow 上有个帖子介绍可以从控制台或者环境变量中获取这些密码等信息。

http://stackoverflow.com/questions/18328730/how-to-create-a-release-signed-apk-file-using-gradle

我们以后更新这个指南的时候会添加更多的信息。