本博文为个人使用过程中遇到问题和解决方案的总结,并非系统的gradle编译教程。
1 在Gradle中配置签名
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion "23.0.3"
signingConfigs {
config {
keyAlias 'xxx'
keyPassword 'xxx'
storeFile file('d:\\mykey')
storePassword 'xxxx'
}
}
// ....
}
2 在gradle中建立多个发行版
因为每个市场,可能要求有不同的广告sdk。就需要有不同的发行版
productFlavors {
qq {
buildConfigField "boolean", "isFree", "true"
buildConfigField "boolean", "hasVip", "false"
}
baidu {
buildConfigField "boolean", "isFree", "false"
buildConfigField "boolean", "hasVip", "true"
}
anzhi{
buildConfigField "boolean", "isFree", "true"
buildConfigField "boolean", "hasVip", "true"
}
}
在这里可以加变量,gradle会在BuildConfig.java中建立isFree和hasVip变量。可以在程序中直接使用这些量。
不同市场不同代码
我想在不同的发行版中使用不同的代码怎么办?比如有的版本中包含A这个类,有的版本包含B这个类。
首先在src下main的同一层建立一个qq目录,qq下建立java目录,其中放入代码
sourceSets {
main {
java.srcDirs = ['src/main/java']
}
debug{
java.srcDirs = ['src/main/java','src/qq/java']
}
baidu{
java.srcDirs = ['src/main/java']
}
}
这里我在debug中,加入了qq\java下的东西,方便调试。 在baidu和main中均不包含这些代码。
qq的sourceset没有配置,因为会自动包含。
不同市场不同的lib
在dependence中可以根据不同的配置进行不同的引入
dependencies {
compile files('libs/open_sdk_r5756.jar')
compile files('libs/Sunflower.jar')
debugCompile files('libs/YoumiSdk_v7.0.1_2017-01-06.jar')
qqCompile files('libs/YoumiSdk_v7.0.1_2017-01-06.jar')
}
其中,debugComile是在debug模式下的时候,加入youmisdk。qqCompile是在qq的debug和release下都加入这个库。而其他的编译版本则没这个库。
不同的市场不同的Androidmanifest
在main下建立一个较为全面的基础xml文件。
在main同一级的其他市场文件夹下,如qq下下,建立Androidmanifest,去掉
xml
android:versionCode="10"
android:versionName="2.03"
去掉
“`xml
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="21"/>
“`
只放增量内容。
gradle会自动对两个xml进行合并。