Android动态打包+传参方法

需求背景

通常我们的应用都会有开发环境(也可以理解为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后面再加上要传入的键值对,中间用=号连接,需要什么参数就传什么参数,如果有其他需要也可以自定义加入。

完结~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,269评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,634评论 25 709
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,005评论 6 342
  • 参考资料:http://gold.xitu.io/post/580c85768ac247005b5472f9htt...
    zhaoyubetter阅读 11,075评论 0 6
  • 不作就不会死。真正经历了才明白这句话的深刻内涵,但已伤痕累累、泪流满面。每个人都希望自己是那个受老天眷顾的幸运儿,...
    流漠雨阅读 536评论 0 1