Android Studio 多渠道打包的关键,就是项目的build.gradle文件里面的productFlavors,通常统计用的是友盟,以友盟为例经过修改渠道号,进行多渠道打包。java
1.一种是在manifest文件里面,定义了渠道号,这个时候,就要用到manifestPlaceholders ,经过在build.gradle文件里面的productFlavors,定义多渠道的名称,每一个渠道下面是该manifestPlaceholders的值,能够参考http://stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/ android
2.另外一种,渠道号是在java代码里面设置的,这种状况下,能够经过定义 buildConfigField 'String', 'UMENG_CHANNEL_VALUE', UMENG_CHANNEL_VALUE,而后在代码里面,经过buildConfigField类名点UMENG_CHANNEL_VALUE来获取相应的渠道号。好比 BuildConfig.UMENG_CHANNEL_VALUE 。apache
最后附上第二种状况下的gradle文件以供参考android-studio
apply plugin: 'com.android.application'app
android {ide
compileSdkVersion 23gradle
buildToolsVersion '23.0.2'优化
defaultConfig {ui
applicationId "cn.com.xxx"google
minSdkVersion 14
targetSdkVersion 22
versionCode 188
versionName "3.1.0"
// Enabling multidex support. 65535
multiDexEnabled true
useLibrary 'org.apache.http.legacy'
}
buildTypes {
debug{
// 显示Log
buildConfigField "boolean", "LOG_DEBUG", "true"
versionNameSuffix "-debug"
minifyEnabled false
zipAlignEnabled false
shrinkResources false
}
release {
// 不显示Log
buildConfigField "boolean", "LOG_DEBUG", "false"
// 移除无用的resource文件
//shrinkResources true
//混淆
minifyEnabled true
//Zipalign优化
zipAlignEnabled true
proguardFiles 'proguard.cfg'
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 下面的appname改成你本身的app name
def fileName = "KTN-A-PH_${defaultConfig.versionName}_${variant.productFlavors[0].name}-E084.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
}
// 友盟多渠道打包
productFlavors {
xiaomi {
String UMENG_CHANNEL_VALUE='"KTN-A-PH_4.3.7_xiaomi-E084"'
buildConfigField 'String', 'UMENG_CHANNEL_VALUE', UMENG_CHANNEL_VALUE
}
/*qihoo {
buildConfigField 'String', 'UMENG_CHANNEL_VALUE', '"KTN-A-PH_4.3.7_qihoo-E084"'
}
qq {
buildConfigField 'String', 'UMENG_CHANNEL_VALUE', '"KTN-A-PH_4.3.7_qq-E084"'
}*/
}
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java']
resources.srcDirs = ['src/main/res']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['src/main/res']
assets.srcDirs = ['src/main/assets']
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
dependencies {
//compile files('libs/com_unionpay_upomp_lthj_lib.jar')
compile project(':alipay_lib')
compile project(':upomp_Res_for_kt3x')
compile project(':weiboSDK')
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
compile 'com.android.support:support-v4:23.0.0'
}