大家可能在android开发打包的时候需要配置各种参数,各种测试环境,上线的时候需要打不同渠道的包,甚至各种开关(如:日志开关)。需要配置这么多东西,搞不好就忘了哪个,出现各种问题,下面我就讲一下快捷打包,点几下鼠标就可以。
1、配置工程根目录下的build.gradle
buildscript { repositories { // jcenter() maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } } dependencies { classpath 'com.android.tools.build:gradle:2.3.1' classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.8.11' classpath 'org.codehaus.groovy:groovy-all:2.3.6' } } allprojects { repositories { jcenter() } } repositories { maven { url 'https://raw.githubusercontent.com/Goddchen/mvn-repo/master/' } mavenCentral() }
2、配置app目录下的build.gradle
import org.tmatesoft.svn.core.wc.* import groovy.util.* apply plugin: 'com.android.application' def releaseTime() { return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC")) } def getSvnRevision() { ISVNOptions options = SVNWCUtil.createDefaultOptions(true); SVNClientManager clientManager = SVNClientManager.newInstance(options); SVNStatusClient statusClient = clientManager.getStatusClient(); SVNStatus status = statusClient.doStatus(projectDir, false); SVNRevision revision = status.getRevision(); return revision.getNumber(); }android { compileSdkVersion 21 buildToolsVersion '25.0.0' compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } lintOptions { disable "ResourceType" } defaultConfig { applicationId "cn.yigou.mobile" minSdkVersion 14 targetSdkVersion 19 versionCode 419 versionName "4.1.9" } buildTypes { debug_online { // 显示Log buildConfigField "boolean", "LOG_DEBUG", "true"//链接生产环境或测试环境
buildConfigField "boolean", "IS_ONLINE", "true" versionNameSuffix "-debug" debuggable true jniDebuggable true renderscriptDebuggable true minifyEnabled false pseudoLocalesEnabled false zipAlignEnabled false } debug_offline { // 显示Log buildConfigField "boolean", "LOG_DEBUG", "true" buildConfigField "boolean", "IS_ONLINE", "false" versionNameSuffix "-debug" debuggable true jniDebuggable true renderscriptDebuggable true minifyEnabled false pseudoLocalesEnabled false zipAlignEnabled false } release { // 不显示Log buildConfigField "boolean", "LOG_DEBUG", "false" buildConfigField "boolean", "IS_ONLINE", "true" minifyEnabled true zipAlignEnabled true proguardFiles 'proguard.cfg' //是否清理无用资源 shrinkResources true } applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile def fileName; if (outputFile != null && outputFile.name.endsWith('.apk')) { // 输出apk名称为114MALL_v1.0_2015-01-15_wandoujia.apk if (variant.buildType.name.equals('release')) { fileName = "114MALL_v${defaultConfig.versionName}_${getSvnRevision()}_${releaseTime()}_${variant.productFlavors[0].name}_online_release.apk" } else if (variant.buildType.name.equals('debug_online')) { fileName = "114MALL_v${defaultConfig.versionName}_${getSvnRevision()}_${releaseTime()}_${variant.productFlavors[0].name}_online_debug.apk" } else { fileName = "114MALL_v${defaultConfig.versionName}_${getSvnRevision()}_${releaseTime()}_${variant.productFlavors[0].name}_offline_debug.apk" } output.outputFile = new File(outputFile.parent, fileName) } } } }//渠道配置productFlavors { //安智,机锋,应用汇,木蚂蚁,华为,OPPO,N多市场,豌豆荚,小米,腾讯,360,百度 //ANZHI_MARKET JIFENG_MARKET YINGYONGHUI_MARKET MUMAYI_MARKET HUAWEI_MARKET OPPO_MARKET ///NDUO_MARKET WANDOUJIA_MARKET XIAOMI_MARKET TENGXUN_MARKET 360_MARKET BAIDU_MARKET mall_114 { manifestPlaceholders = [CHANNEL_NAME: "114MALL"] } anzhi_market { manifestPlaceholders = [CHANNEL_NAME: "ANZHI_MARKET"] } jifeng_market { manifestPlaceholders = [CHANNEL_NAME: "JIFENG_MARKET"] } yingyonghui_market { manifestPlaceholders = [CHANNEL_NAME: "YINGYONGHUI_MARKET"] } mumayi_market { manifestPlaceholders = [CHANNEL_NAME: "MUMAYI_MARKET"] } huawei_market { manifestPlaceholders = [CHANNEL_NAME: "HUAWEI_MARKET"] } oppo_market { manifestPlaceholders = [CHANNEL_NAME: "OPPO_MARKET"] } nduo_market { manifestPlaceholders = [CHANNEL_NAME: "NDUO_MARKET"] } wandoujia_market { manifestPlaceholders = [CHANNEL_NAME: "WANDOUJIA_MARKET"] } xiaomi_market { manifestPlaceholders = [CHANNEL_NAME: "XIAOMI_MARKET"] } tengxun_market { manifestPlaceholders = [CHANNEL_NAME: "TENGXUN_MARKET"] } market_360 { manifestPlaceholders = [CHANNEL_NAME: "360_MARKET"] } baidu_market { manifestPlaceholders = [CHANNEL_NAME: "BAIDU_MARKET"] } } }3、在AndroidManifest.xml代码中调用渠道配置
<meta-data android:name="114MALL_APM_APP_CHANNEL" android:value="${CHANNEL_NAME}"> </meta-data>
4、在日志文件中调用日志开关
private static boolean logFlag = BuildConfig.LOG_DEBUG;
5、在配置文件中调用平台环境
/** * true:正式环境 false:测试环境; */ public static boolean IS_ONLINE = BuildConfig.IS_ONLINE;
6、以上配置好了,接下来就是调用android studio打包功能,如图:
7、最终生成文件名如下:114MALL_v4.1.9_51985_2017-04-13_mall_114_offline_debug.apk,文件虽然很长,但里面带了丰富的信息