转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51508132 文章出自:薛瑄的博客
你也可以查看我的其他同类文章,也会让你有一定的收货!
关于使用Gradle来控制版本和生成不同版本的代码,我总结了三篇文章,网上关于这些知识,都比较零散,我在学习这些的之前,根本不知道还有这样的方法。所以说不知道并不可怕,可怕的是不知道自己不知道。相信这三篇文章,会给你不少灵感
Gradle构建控制Log开关——BuildConfig\自定义
使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中 < meta-data>变量的值
Gradle编译生成不同的版本,动态设定应用标题 / 应用图标 / 替换常量
写项目的时候经常会遇到以下的情况:
1.需要生成测试版本和正式版本的apk
2.测试版本和正式版本的URL是不一样的
3.测试版本和正式版本的包名需要不一致,这样才能安装到同一部手机上面。
4.不同apk需要应用名不同,图标不同,某些常量不同….
我们经常需要在应用中定义一些常量,当应用正式发布的时候,常常是注释掉测试用的部分,放开正式的部分,就像下面一样:
public static String BASE_URL = "http://staging.tamere.be"//public static String BASE_URL = "http://production.tamere.be"
- 1
- 2
上面的步骤是烦躁,无味的,修改一个地方还好,代码越来越多,维护越来复杂,这个时候我们Gradle就闪亮登场了
Build variants介绍
建议阅读这篇博客
build.gradle中可以包括两个节点:buildTypes和productFlavors
buildTypes默认有release和debug两个选项。
我们这里在productFlavors增加production和staging.
buildTypes和productFlavors组合就有下面4个版本了。
ProductionDebugProductionReleaseStagingDebugStagingRelease
- 1
- 2
- 3
- 4
下面使用两种方法实现上面所述的需求:
第一种:新增目录,目录的名称是productFlavors 节点的名称
示例项目
示例项目很简单,在不同的版本中我们需要修改项目名称,项目图标,一些常量:url…,项目可以从Github 下载,效果图如下:
1、build.gradle文件配置如下:
apply plugin: 'com.android.application'android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { minSdkVersion 15 targetSdkVersion 22 } buildTypes { release { minifyEnabled false shrinkResources true// proguardFiles 'proguard-project.txt' } debug { minifyEnabled false shrinkResources true } } productFlavors { staging { applicationIdSuffix ".staging" //原作者的github项目使用的是packageName,