博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android studio 使用Gradle进行区分生产和测试环境打包(两种不同的方式打包时自动更换访问的服务地址)
阅读量:3564 次
发布时间:2019-05-20

本文共 2491 字,大约阅读时间需要 8 分钟。

前言:

使用工具:AndroidStudio
    适用场景:打包时自动识别生产环境和测试环境的不同的地址
    了解知识:Gradle的使用语言Groovy

1:配置地址文件(ps:debug:测试环境(线下);release:生产环境(线上))

 
 
 
 
debug下:www.baidu.comrelease下:www.google.com        // =================================================SERVER2 = "http://www.baidu.com"IMAGEREQUEST = "http://www.aaa.com:端口号"WEB = "http://dev.xxx.com:端口号" statistical = "https://dev.aaa.com:端口号/android/"
 

2:配置build.gradle文件(该文件路径是:app/build.gradle)

    2-1:自定义方法获取地址: 定义变量类型(String)  变量名称(SERVER2)  获取变量值的方法getSERVER2('release/debug') 

            (release/debug:代表在app下创建的文件目录)
 
 
 
buildTypes{    release{         minifyEnabled true//开启混淆        proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'// 加载混淆配置文件                buildConfigField'String','SERVER2', getSERVER2('release')        buildConfigField'String','IMAGEREQUEST', getIMAGEREQUEST('release')        buildConfigField'String','WEB', getWEB('release')        buildConfigField'String','statistical', getstatistical('release')         signingConfig signingConfigs.releaseConfig // 签名配置;小科普:此行的调用需放到签名配置之后,否则编译会报异常    }     debug{        buildConfigField'String','SERVER2', getSERVER2('debug')        buildConfigField'String','IMAGEREQUEST', getIMAGEREQUEST('debug')        buildConfigField'String','WEB', getWEB('debug')        buildConfigField'String','statistical', getstatistical('debug')        signingConfig signingConfigs.debugConfig // 签名配置    }}
 
 

2-2:自定义方法,读取properties文件获取地址(简单的例子,如果有多个可以进行添加多个,但是2-1中的位置还需要再次添加一个方法)

            注意自己定义的文件路径地址是否正确
 
 
// 获取配置文件内容的地址def getSERVER2(String str) {    def SERVER2    def Properties properties = new Properties()    def proFile = file('src/main/filters/' + str + '/config.properties') // 配置文件地址的路径    if (proFile.canRead()) { // 读取        properties.load(new FileInputStream(proFile)) // 加载        if (properties != null) {            SERVER2 = properties['SERVER2'] // 赋值        }    }    SERVER2} def getIMAGEREQUEST(String str) {    def IMAGEREQUEST    def Properties properties = new Properties()    def proFile = file('src/main/filters/' + str + '/config.properties')    if (proFile.canRead()) {        properties.load(new FileInputStream(proFile))        if (properties != null) {            IMAGEREQUEST = properties['IMAGEREQUEST']        }    }    IMAGEREQUEST}
 

3:调用地址

    3-1:在java代码中调用BuildConfig . 变量名称

 
 
   buildConfig的产出路径(编译后自动生成的文件)
 
                debug下SERVER2获取到的是:
                release下SERVER2获取到的是:
 
 

4:其他

    选择编译类型,在AndroidStudio的左侧有一个Build Variants
选中项目右侧显示要打包的场景(debug/release)
`
 

5:备注

至于好处就不多说了,实战看效果,就一目了然了!
附上demo地址 仅供参考,如有 更好的方式还请多多补充;
 

 

你可能感兴趣的文章
JavaScript 页面加载时调用函数addLoadEvent实现
查看>>
无向图与有向图判定欧拉道路与欧拉回路的方法
查看>>
UVa 1599 理想路径 正向bfs+反向bfs
查看>>
蓝桥杯 历届试题 发现环
查看>>
牛客练习赛41 C 抓捕盗窃犯
查看>>
UVA - 725 Division 暴力
查看>>
UVa 725 - Division
查看>>
UVA - 10976 暴力枚举
查看>>
UVA - 524 Prime Ring Problem dfs回溯 素数环
查看>>
UVA - 129 Krypton Factor
查看>>
UVA - 140 Bandwidth
查看>>
历届试题 k倍区间 前缀和
查看>>
蓝桥杯 历届试题 核桃的数量 求三个数的最小公倍数
查看>>
HDU - 1043 Eight 打表+bfs+康托扩展
查看>>
洛谷 P2819 图的m着色问题
查看>>
Hdu 1401 Solitaire 双向bfs
查看>>
UVA - 208 Firetruck 并查集+dfs
查看>>
Hdu 1401 Fire Net
查看>>
Hdu 2444 The Accomodation of Students
查看>>
Hdu 1803 Courses 二分图匹配模板题
查看>>