Android Studio 使用 Gradle 这一高级构建工具包来自动化执行和管理构建流程,同时也允许您定义灵活的自定义构建配置。每个构建配置均可自行定义一组代码和资源,同时对所有应用版本共有的部分加以重复利用。
Android Plugin for Gradle 与这个构建工具包协作,共同提供专用于构建和测试 Android 应用的流程和可配置设置。
gradle 和 android plugin fore gradle 都是独立于android studio 运行。
构建流程图
配置构建类型
您可以在模块级 build.gradle 文件的 android {} 代码块内部创建和配置构建类型。当您创建新模块时,Android Studio 会自动为您创建调试和发布这两种构建类型。尽管调试构建类型不会出现在构建配置文件中,Android Studio 会将其配置为 debuggable true。这样,您可以在安全的 Android 设备上调试应用并使用通用调试密钥库配置 APK 签署。
如果您希望添加或更改特定设置,您可以将调试构建类型添加到您的配置中。以下示例为调试构建类型指定了 applicationIdSuffix,并配置了一个使用调试构建类型中的设置进行初始化的“jnidebug”构建类型。
android {
...
defaultConfig {...}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
applicationIdSuffix ".debug"
}
/**
* The 'initWith' property allows you to copy configurations from other build types,
* so you don't have to configure one from the beginning. You can then configure
* just the settings you want to change. The following line initializes
* "jnidebug" using the debug build type, and changes only the
* applicationIdSuffix and versionNameSuffix settings.
*/
jnidebug {
// This copies the debuggable attribute and debug signing configurations.
initWith debug
applicationIdSuffix ".jnidebug"
jniDebuggable true
}
}
}
buildTypes 可以配置各个版本需要的相应属性,例如发布版本需要 混淆, 而debug版本不需要, 或者其他自定义版本的属性。
在buildTypes区域中可以配置许多构建的属性,例如: 混淆文件 --proguardFiles、是否过滤掉未使用的资源 -- shrinkResources (默认为false: 未使用 是指代码中从未引用过的resource资源)、开启多个Dex文件--multiDexEnabled (在android 5.0之前需要使用,用于突破65K方法数)等。更多的属性可以参考官方文档。
配置产品风味
创建产品风味与创建构建类型类似:只需将它们添加到 productFlavors {} 代码块并配置您想要的设置。产品风味支持与 defaultConfig 相同的属性,这是因为 defaultConfig 实际上属于 ProductFlavor 类。这意味着,您可以在 defaultConfig {} 代码块中提供所有风味的基本配置,每种风味均可替换任何默认值,例如 applicationId。
注:您仍需在 main/ 清单文件中使用 package 属性指定程序包名称。您还必须在源代码中使用此程序包名称引用 R 类或者解析任何相关的 Activity 或服务注册。这样,您可以使用 applicationId 为每个产品风味分配一个唯一的 ID,以用于打包和分发,而不必更改您的源代码。
以下代码示例创建了一个“演示”和“完整”产品风味并赋予其自己的 applicationId 和 versionName
android {
...
defaultConfig {...}
buildTypes {...}
productFlavors {
demo {
applicationId "com.example.myapp.demo"
versionName "1.0-demo"
}
full {
applicationId "com.example.myapp.full"
versionName "1.0-full"
}
}
}
配置此参数之后,gradle可以根据你的配置生成相应的apk,每一个配置对应的一个apk。
配置完成后, 你也可以单独的为每个flavors配置他们独有的功能代码。可以参考 官网的 “构建配置”章节里面的”创建用于构建变体的源集” 小节
配置签署设置
除非您为发布构建显式定义签署配置,否则,Gradle 不会签署发布构建的 APK。您可以轻松创建发布密钥并使用 Android Studio 签署发布构建类型。
要使用 Gradle 构建配置为您的发布构建类型手动配置签署配置:
1.创建密钥库。密钥库是一个二进制文件,它包含一组私钥。您必须将密钥库存放在安全可靠的地方。
2.创建私钥。私钥代表将通过应用识别的实体,如某个人或某家公司。
3.将签署配置添加到模块级 build.gradle 文件中:
...
android {
...
defaultConfig {...}
signingConfigs {
release {
storeFile file("myreleasekey.keystore")
storePassword "password"
keyAlias "MyReleaseKey"
keyPassword "password"
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
因为andorid要求所有的apk先签名才能安装。所有你可以在这里配置相应的秘钥,用于发布 和 调试版本。