1.多环境打包

在android开发中经常遇到要打不同环境的包,所谓不同环境就是接口连接的服务器域名不同,如开发环境为devIP,测试环境为buildIP,uat环境为uatIP,release环境为releaseIP 。以前的做法是同过一个static变量去配置环境变量,这样每次打不同环境的包需要多次修改配置并且多次打包,现在使用as后发现一种可以一次性打所有环境的包 方法如下:

<1>首先要学习使用BuildConfig配置类(不知道的查一下)

在gradle 中添加配置BuildConfig配置

buildTypes {
     ...
        dev{
            buildConfigField("String","Environment","DEV")
           ...
        }
         release{
            buildConfigField("String","Environment","release")
           ...
        }    
    }

这样就在BuildConfig中添加啦Environment字段,再在代码中根据Environment变量配置环境

<2>打包输出所有环境的包

只需要在as命令行下使用gradlew build 就ok,也可以使用gradle build命令不过需要配置环境变量,打包可能出错如需要加

android {
    ...
    lintOptions {
        abortOnError false
    }
    ...
    }

记得在每个module下的配置都加

<3>自定义打包apk的名字

在gradle文件中的Android节点下添加如下代码

android.applicationVariants.all {
        variant -> variant.outputs.each {
            output -> output.outputFile = new File(output.outputFile.parent, "packageanme" + defaultConfig.versionCode +  "_v" + defaultConfig.versionName +"_"+buildType.name+ ".apk");
        }
    }

动态获取版本号:
在gradle文件中的Android节点外添加如下代码

def getVersionNameFromManifest() {
    def manifestParser = new com.android.builder.core.DefaultManifestParser()
    return manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile)
}

defaultConfig中配置版本号:直接在defaultConfig 中加入versionName 属性,也可以直接调用上面方法(不过这里有个坑,在改变配置xml中版本号时,会出现找不到对应版本apk,或者apk不更新,所以还是每次改变版本号时,versionName 也跟着改变就ok)

defaultConfig {
       ……
       versionName "2.0.14"
        ……
    }

2.多渠道打包

在使用友盟统计,腾讯云统计的时候,需要配置渠道,打包不同渠道时每次修改配置文件很繁琐,as提供一种方便方法如下

<1>项目的manifest.xml中使用占位符

<meta-data  
    android:name="UMENG_CHANNEL"  
    android:value="${CHANNEL_NAME}" />

<2>在gradle中给占位符赋值

android {  
    // 你的其他配置代码  

    productFlavors {  
        yingyongbao {  
            manifestPlaceholders = [ CHANNEL_NAME:"YINGYONGBAO"]  
        }  
        umeng {  
            manifestPlaceholders = [ CHANNEL_NAME:"UMENG" ]  
        }  
        wandoujia {  
            manifestPlaceholders = [ CHANNEL_NAME:"WANDOUJIA" ]  
        }  

    }  
    // 你的其他配置代码  
}

最后打包输出即可