默认情况下,Android Plugin会自动给项目设置同时构建应用程序的debug和release版本。 两个版本之间的不同主要围绕着能否在一个安全设备上调试,以及APK如何签名。
Debug版本采用使用通用的name/password键值对自动创建的数字证书进行签名,以防止构建过程中出现请求信息。Release版本在构建过程中没有签名,需要稍后再签名。
这些配置通过一个BuildType对象来配置。默认情况下,这两个实例都会被创建,分别是一个debug版本和一个release版本。
BuildType
debug
release
Android plugin允许像创建其他构建类型一样定制debug和release实例。这需要在buildTypes的DSL容器中配置:
buildTypes
android { buildTypes { debug { applicationIdSuffix ".debug" } jnidebug.initWith(buildTypes.debug) jnidebug { packageNameSuffix ".jnidebug" jnidebugBuild true } } }
以上代码片段实现了以下功能:
jnidebug
创建一个新的构建类型就是简单的在buildType标签下添加一个新的元素,并且可以使用initWith()或者直接使用闭包来配置它。
buildType
initWith()
以下是一些可能使用到的属性和默认值:
debuggable
jniDebugBuild
renderscriptDebugBuild
renderscriptOptimLevel
applicationIdSuffix
versionNameSuffix
signingConfig
zipAlign
runProguard
proguardFile
proguardFiles
除了以上属性之外,_Build Type_还会受项目源码和资源影响: 对于每一个Build Type都会自动创建一个匹配的sourceSet。默认的路径为:
src/<buildtypename>/
这意味着_BuildType_名称不能是_main_或者androidTest(因为这两个是由plugin强制实现的),并且他们互相之间都必须是唯一的。
跟其他sourceSet设置一样,Build Type的source set路径可以重新被定向:
android { sourceSets.jnidebug.setRoot('foo/jnidebug') }
另外,每一个_Build Type_都会创建一个新的assemble任务。
assembleDebug和assembleRelease两个Task在上面已经提到过,这里要讲这两个Task从哪里被创建。当debug和release构建类型被预创建的时候,它们的tasks就会自动创建对应的这个两个Task。
assembleDebug
assembleRelease
上面提到的build.gradle代码片段中也会实现assembleJnidebug task,并且assemble会像依赖于assembleDebug和assembleRelease一样依赖于assembleJnidebug。
assembleJnidebug
assemble
提示:你可以在终端下输入gradle aJ去运行assembleJnidebug task。
assembleJnidebug task
可能会使用到的情况:
_BuildType_的代码和资源通过以下方式被使用:
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8