博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gradle动态配置项目
阅读量:6470 次
发布时间:2019-06-23

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

可以使用三种方式来通过gradle改变项目信息。

编译时动态改变Manifest

例如,在manifest下配置友盟的渠道:

复制代码

然后在gradle的 product flavor 中写上:

manifestPlaceholders = [UMENG_CHANNEL_VALUE: "GooglePlay"]复制代码

在编译后value的值就会变为GooglePlay了。

编译时动态改变resValue

在你的 gradle 内容 buildTypes 或者 productFlavors 下面,如 release 体内写上类似:

resValue "string", "AppName", "imag"复制代码

这样就可以修改,strings.xml

编译时动态改变BuildConfig

要想通过编译生成代码中可以获取的数据,那我们需要通过一个介质。那就是BuildConfig类。

他是编译的时候动态生成的。 在相同的地方添加:

buildConfigField "String", "name", "\"value\""复制代码

在项目中可以这样使用build.gradle

通过读取一个配置文件,来改变java代码中属性的值。

文件相对路径为“../script/build.properties”,内容如下:

appName=testversionCode=5.0.0mapApiKey=CeFoDLBAGKbbvpa4EFTiFuugpPjdxT1f复制代码

那么就可以通过读取这个文件来进行配置了:

//声明文件路径def pFile = file("../script/build.properties")def Properties p = new Properties()//读取文件内容def loadProperties = {    pFile.withInputStream { stream->        InputStreamReader read = new InputStreamReader(stream, "utf-8");        BufferedReader bf = new BufferedReader(read);        p.load(bf)    }}android {    buildTypes {        //正式打包        release {          loadProperties()          //动态创建res-values值          resValue "string", "app_name", p.appName          //动态创建常量          buildConfigField 'String', 'versionCode', '"' + p.versionCode + '"'          //动态创建manifest中meta的值          manifestPlaceholders = [MAP_API_KEY:p.mapApiKey]    }}复制代码

读取文件夹下的文件名称,动态加载arr库文件

def loadPluginNames = {    String pluginNames = "";    def pluginFiles = file('../plugins').listFiles().sort()    pluginFiles.each { File file ->        if (file.isFile()) {            String baseName = file.name.subSequence(0, file.name.indexOf('.'));            String pluginName = baseName.replaceAll('(Plugin)$', '');            pluginNames = pluginNames + pluginName + ","        }    }    return pluginNames;}//引入aar插件fileTree(dir: 'plugins', include: '**/*.aar').each { File file ->    dependencies.add("compile", [        name: file.name.lastIndexOf('.').with { it != -1 ? file.name[0..

转载地址:http://wgjko.baihongyu.com/

你可能感兴趣的文章
数据库运维体系_SZMSD
查看>>
福大软工1816 · 第三次作业 - 结对项目1
查看>>
selenium多个窗口切换
查看>>
静态库 调试版本 和发布版本
查看>>
JAVA中的finalize()方法
查看>>
慕课网学习手记--炫丽的倒计时效果Canvas绘图与动画基础
查看>>
==与equals()的区别
查看>>
基本分类方法——KNN(K近邻)算法
查看>>
在XenCenter6.2中构建CentOS7虚拟机的启动错误
查看>>
.NET Framework3.0/3.5/4.0/4.5新增功能摘要
查看>>
php中表单提交复选框与下拉列表项
查看>>
熟悉常用的Linux操作
查看>>
面象过程与面象对象
查看>>
谷歌设置支持webgl
查看>>
js的AJAX请求有关知识总结
查看>>
Eclipse添加新server时无法选择Tomcat7的问题
查看>>
nginx 配置https 负载均衡
查看>>
双拓扑排序 HDOJ 5098 Smart Software Installer
查看>>
三分 POJ 2420 A Star not a Tree?
查看>>
存储过程报错行提示
查看>>