美文网首页
Android动态打包+传参方法

Android动态打包+传参方法

作者: 许晓楠 | 来源:发表于2017-06-30 10:50 被阅读0次

需求背景

通常我们的应用都会有开发环境(也可以理解为debug环境)、测试环境、预发环境、正式环境区分,我想要不改代码就可以打出我想要环境的包。比如我现在分别想要一个测试环境的包和一个线上环境的包,但是我又不想改代码

每次发布的时候发现版本号和版本名忘记改了

我想要随时指定一个目录,将打包好的文件放在这里面

我想要在打包时可以自定义安装包的文件名

我想要每次打包的时候可以随意打各个环境的包


解决办法

很简单,如果你不想改代码又想要得到不同环境的包,那当然是使用Gradle的命令,前面说过Gradle命令后面可以加上Task的name直接执行Task,那我们可以自己定义我们需要的Task,让不同的Task去做我们想要做的事不就解决问题了吗。

以下以一个demo举例打包时传入参数动态生成apk安装包(MAC环境)

也不难,传参,需要什么就传入什么,这样就解决了动态指定的问题了。


步骤

1.使用android studio构建一个工程,双击进入Gradle Scripts 中的build.gradle 

代码片段

2.加入常量 def API_SCM_NAME ="debug"  这里可以附一个默认值

代码片段-加入常量

3.配置defaultConfig 这里说明一下

project.hasProperty("key")方法用来接收传入参数,这里用了一个三目运算,如果传入参数VERSION_NAME有参数则使用传入参数,如果没有传入参数则使用默认值“debug”

buildConfigField(类型,键,值)方法用来给BuildConfig这个类中加入常量API_HOST,以供代码中调用,注意:这里的字符串需要在里面加入引号,用转义符转义,因为Groovy会直接把最外层引号内的值赋值给生成的自定义变量,如果不加,赋值后的String字符串就会没有引号,导致编译出错。

代码片段

4.在代码中引用调用API_HOST常量;声明一个LOGIN_URL来存放BuildConfig.API_HOST

代码片段

5.配置签名

代码片段

6.动态生成APK包名

代码片段

7.打包命令:

gradle clean assemblerelease -PVERSION_NAME=www.baidu.com

在命令行里面执行这个命令就可以打出所有的Beta包了(前提是已经安装好Gradle,并配置好Gradle的环境变量,或者使用IDE里面的terminal,在项项目目录下使用gradlew命令),其中assembleBeta 可以根据自己需求替换成其他的task名字。

传参就是在后面加上 -P参数,-P后面再加上要传入的键值对,中间用=号连接,需要什么参数就传什么参数,如果有其他需要也可以自定义加入。

完结~

相关文章

网友评论

      本文标题:Android动态打包+传参方法

      本文链接:https://www.haomeiwen.com/subject/xsjbcxtx.html