超实用!打包、配置项目必备的Gradle实战技巧!
官方参考
https://developer.android.com/studio/build/gradle-tips.html
以下都是经过实战总结、多次调整的gradle配置方案,欢迎采用,提意见
一 自动命名打包的不同版本applicationVariants.all{variant->
variant.outputs.each{output->
if(output.outputFile!=null&&output.outputFile.name.endsWith('.apk')){
if("debug"==variant.buildType.name){
defapkFile=newFile(
output.outputFile.getParent(),
"XXX_App_${variant.versionName}_${buildTime()}_debug.apk")
output.outputFile=apkFile
}elseif("release"==variant.buildType.name){
defapkFile=newFile(
output.outputFile.getParent(),
"XXX_App_${variant.versionName}_release.apk")
output.outputFile=apkFile
}
}
}
if(variant.buildType.name=="debug"){
variant.mergedFlavor.versionName=variant.mergedFlavor.versionName+"."+buildTime();
}
}
defbuildTime(){
defdate=newDate()
defformattedDate=date.format('yyyyMMdd')
returnformattedDate
}
二 统一全module的配置
在build.gradle中改写引用方式
compileSdkVersion rootProject.ext.android["compileSdkVersion"]
在config.gradle中配置如下
ext{
android=[
compileSdkVersion:23,
buildToolsVersion:"25.0.0",
minSdkVersion:15,
targetSdkVersion:22,
minifyEnabled:false,
minifyFile:rootProject.file('proguard-rules.pro'),
]
version=[
"supportVersion":"25.0.0"
]
dependencies=[
"support_v4":"com.android.support:support-v4:${version["supportVersion"]}",
"appcompat-v7":"com.android.support:appcompat-v7:${version["supportVersion"]}",
"recycleview":"com.android.support:recyclerview-v7:${version["supportVersion"]}",
"multidex":"com.android.support:multidex:1.0.1",
"junit":"junit:junit:4.12",
//Baidulocation
"baidu":"libs/BaiduLBS_Android.jar"
]}
三 混合使用productFlavors和 meta
manifestPlaceholders可以在清单文件中配置好,格式如下
<meta-data
android:name="appid"
android:value="12334"/>
同时在build.gradle中引用
productFlavors{
normal{
applicationId"com.xxx"
manifestPlaceholders=[xxx:"0",appid:"xxx",host:"xxx"];
}
productone{
applicationId"com.xxx"
manifestPlaceholders=[xxx:"0",appid:"xxx",host:"xxx"];
}
producttwo{
applicationId"com.xxx"
manifestPlaceholders=[xxx:"0",appid:"xxx",host:"xxx"];
}
}
配置不同product的资源和jni来源
sourceSets{
normal{
jniLibs.srcDirs=['src/normalIn/jniLibsIn/']
assets.srcDirs=['src/normalIn/assetsIn']
}
productone{
jniLibs.srcDirs=['src/normalIn/jniLibsIn/']
assets.srcDirs=['src/normalIn/assetsIn']
}
}
代码中调用方法:
try{
ApplicationInfoinfo=context.getPackageManager().getApplicationInfo(context.getPackageName(),PackageManager.GET_META_DATA);
if(info!=null&&info.metaData!=null){
meta=info.metaData.getInt("appid");
}
}catch(PackageManager.NameNotFoundExceptione){
e.printStackTrace();
}
四 flavor版本判断
//build.gradleinapplicationmodule
android{
productFlavors{
googlePlay{
}
wandoujia{
}
}
}
if(getGradle().getStartParameter().getTaskRequests().toString().contains("GooglePlay")){
//GooglePlay版本才应用该插件
applyplugin:'com.google.gms.google-services'
}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。