buildscript { repositories { mavenCentral() } dependencies { classpath
'com.android.tools.build:gradle:1.0.+' } } apply
plugin: 'android'
dependencies { compile fileTree(
dir: 'libs', include: ['*.jar']) compile
'com.android.support:support-v4:+'
//下面的是添加Eclipse的依赖工程 compile project(
':HorizontalVariableListView-master') compile project(
':ListView_animotion/library') compile project(
':MultiprocessPreferences-master') compile project(
':PinterestLikeAdapterView-master') }
android { compileSdkVersion 19 buildToolsVersion
"19.1.0" packagingOptions { exclude
'META-INF/DEPENDENCIES' exclude
'META-INF/notice.txt' exclude
'META-INF/LICENSE.txt' exclude
'META-INF/MANIFEST.MF' exclude
'META-INF/LICENSE' exclude
'META-INF/NOTICE' } defaultConfig { minSdkVersion
10
targetSdkVersion
20 } sourceSets { main { manifest
.srcFile 'AndroidManifest.xml' java
.srcDirs = ['src'] resources
.srcDirs = ['src'] aidl
.srcDirs = ['src'] renderscript
.srcDirs = ['src'] res
.srcDirs = ['res'] assets
.srcDirs = ['assets']
//下面选项是添加对native libs的编译支持 jniLibs
.srcDirs = ['libs'] } } lintOptions { abortOnError
false checkReleaseBuilds
false } signingConfigs { release {
//输入自己的keyStore以及keyAlias storeFile file(
"release.keystore") storePassword
STOREPASS keyAlias
'xxxx' keyPassword
KEYPASS } } buildTypes { release { signingConfig signingConfigs
.release minifyEnabled
true zipAlignEnabled
true
//输入自己的混淆文件 proguardFile
'proguard.txt' } } productFlavors {
// Main android app markets
Mocha{}
Xiaomi{}
//添加pre是因为flavor命名不支持数字开头,编译的时候会做处理 pre360Channel{}
Baidu{}
Hiapk{} pre91Channel{}
WanDouJia{}
Tencent{}
Anzhi{}
AppChina{} } } tasks
.withType(JavaCompile) { options
.encoding = "UTF-8" }
import java.util.regex.Pattern
import java.util.regex.Matcher
//替换AndroidManifest.xml的UMENG_CHANNEL_VALUE字符串为渠道名称 By Remex Huang android
.applicationVariants.all{ variant -> variant
.outputs.get(0).processManifest.doLast{
//之前这里用的copy{},我换成了文件操作,这样可以在v1.11版本正常运行,并保持文件夹整洁
//${buildDir}是指./build文件夹
//${variant.dirName}是flavor/buildtype,例如GooglePlay/release,运行时会自动生成
//下面的路径是类似这样:./build/manifests/GooglePlay/release/AndroidManifest.xml
def channel;
def apkname = "";
if(variant.productFlavors[0].name.contains("_")){
def flavorNames = variant.productFlavors[0].name.split("_") channel
= flavorNames[0] apkname
= "_" + flavorNames[1] }
else { channel
= variant.productFlavors[0].name
if(!channel.contains("Mocha")){ apkname
= "_" + channel } } channel
= channel.replaceAll("pre", "") apkname
= apkname.replaceAll("pre", "")
def manifestFile = "${buildDir}/intermediates/manifests/full/${variant.dirName}/AndroidManifest.xml"
//将字符串UMENG_CHANNEL_VALUE替换成flavor的名字
def updatedContent = new File(manifestFile).getText('UTF-8').replaceAll("MOCHA_CHANNEL", channel)
new File(manifestFile).write(updatedContent, 'UTF-8')
//获取版本号
def patternVersionNumber = Pattern.compile("versionName=\"(\\d+)\\.(\\d+)\\.(\\d+)\"")
def manifestText = new File(manifestFile).getText()
def matcherVersionNumber = patternVersionNumber.matcher(manifestText) matcherVersionNumber
.find()
def majorVersion = Integer.parseInt(matcherVersionNumber.group(1))
def minorVersion = Integer.parseInt(matcherVersionNumber.group(2))
def pointVersion = Integer.parseInt(matcherVersionNumber.group(3))
def versionName = + majorVersion + "." + minorVersion + "." + pointVersion
//将此次flavor的AndroidManifest.xml文件指定为我们修改过的这个文件 variant
.outputs.get(0).processResources.manifestFile = file("${buildDir}/intermediates/manifests/full/${variant.dirName}/AndroidManifest.xml")
println "******************/\n/\n/\n/\n/\n/\n"
println "buildType.name = " + variant.buildType.name
println "******************/\n/\n/\n/\n/\n/\n"
def apkName = "Mocha";
if (variant.buildType.name == "release") { apkName
+= apkname + "_V" + versionName + ".apk";
//variant.outputFile = file("${buildDir}/outputs/mochapk/" + apkName)
// !! 这里需要自定义自己的输出文件夹 variant
.outputs.get(0).outputFile = file("/Users/tengfei/Documents/yunyao/code/mocha/apk/" + versionName + "/" + apkName) }
else { apkName
+= apkname + "-SNAPSHOT.apk"; variant
.outputs.get(0).outputFile = file("${buildDir}/outputs/apk/" + apkName) } } }