Android Studio使用Gradle打包
标签(空格分隔): Android Studio Gradle
直接上代码
apply plugin: 'com.android.application'
//如果是一个library
//apply plugin: 'com.android.library'
//定义打包时间函数
def releaseTime() {
return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
}
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
// defaultConfig是默认配置,如果没有其他的配置覆盖,就会使用这里的
defaultConfig {
//代表应用的包名
applicationId "com.sunflower.mytest"
minSdkVersion 15
targetSdkVersion 22
versionCode 1 //版本号
versionName "1.0" //版本名称
//BuildConfig.java是Android Gradle自动生成的一个java类文件,无法手动编译,但是可以通过Gradle控制
//buildConfigField 一共有3个参数,第一个是数据类型,就是你定义的常量值是一个什么类型,和Java的类型是对等的,这里是String。
// 第二个参数是常量名,这里是URL。第三个参数是常量值。如此定义之后,就会在BuildConfig.java中生成一个常量名为URL的常量定义。默认配置的生成是:
//自定义字段,表示当前的服务器地址,不同版本的服务器地址可能不一致,在Activity中使用BuildConfig.URL获得此值
buildConfigField "String", "URL", '"http://baidu.com"'
}
buildTypes {
release {
// 不显示Log
buildConfigField "boolean", "LOG_DEBUG", "false"
//混淆
minifyEnabled true
//Zipalign优化
zipAlignEnabled true
// 移除无用的resource文件
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
// 显示Log
buildConfigField "boolean", "LOG_DEBUG", "true"
versionNameSuffix "-debug"
minifyEnabled false
zipAlignEnabled false
shrinkResources false
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 输出apk名称为boohee_v1.0_2015-01-15_wandoujia.apk
def fileName = "测试_v${defaultConfig.versionName}_demo_${releaseTime()}_${variant.productFlavors[0].name}.apk"
// def fileName = "我要物流_v${defaultConfig.versionName}_demo_${releaseTime()}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
productFlavors {
//默认使用的是defaultConfig配置。
// 这里的flavor和defaultConfig是一样的,可以自定义其applicationId、versionCode以及versionName等信息
jianshu {
buildConfigField "String", "URL", '"http://www.jianshu.com"'//API Host
}
taobao {
buildConfigField "String", "URL", '"https://www.taobao.com"'//API Host
}
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'
}
最后执行assemble这个命令,会结合 Build Type 创建自己的task,如:
gradlew assembleDebug
gradlew assembleRelease
如果我们想打包wandoujia渠道的release版本,执行如下命令就好了:
gradlew assembleWandoujiaRelease
如果我们只打wandoujia渠道版本,则:
gradlew assembleWandoujia
此命令会生成wandoujia渠道的Release和Debug版本
同理我想打全部Release版本:
gradlew assembleRelease
这条命令会把Product Flavor下的所有渠道的Release版本都打出来。
参考以下文档:
美团Android自动化之旅—适配渠道包
使用Gradle管理你的Android Studio工程
Android Studio多渠道打包和代码混淆教程
Android官方技术文档翻译——ApplicationId 与 PackageName
Android Studio使用Gradle打包
标签(空格分隔): Android Studio Gradle
直接上代码
最后执行
assemble这个命令,会结合 Build Type 创建自己的task,如:如果我们想打包wandoujia渠道的release版本,执行如下命令就好了:
如果我们只打wandoujia渠道版本,则:
此命令会生成wandoujia渠道的Release和Debug版本
同理我想打全部Release版本:
这条命令会把Product Flavor下的所有渠道的Release版本都打出来。
参考以下文档:
美团Android自动化之旅—适配渠道包
使用Gradle管理你的Android Studio工程
Android Studio多渠道打包和代码混淆教程
Android官方技术文档翻译——ApplicationId 与 PackageName