您的位置:首页 > 其它

gradle进行工程环境配置(通过修改Asset目录下的文件)

2017-07-03 19:53 543 查看
通过gradle自动修改Assest目录下的配置文件,

以使得打正式包/测试包/预发包的时候,不需要再手动改配置文件。

我先是这么写的:

发现虽然Assets目录下的example.json是修改成我想要的了,但是打出来的包环境不对。

对包体反编译后发现,Assets目录下的环境压根没有改变。

然后查资料才知道,在进行打包的时候,Assest目录下的文件会先拷贝到一个目录中。

工程里Assets内的example.json被修改的时候,拷贝已经完成了,再修改也没用了。

因此修改文件必须要先于拷贝。

tasks.whenTaskAdded { theTask ->
println("theTask.name:"+ theTask.name + " " + theTask.group)
if(theTask.name.equalsIgnoreCase("Debug")){
theTask.doFirst {
modifyAssetsConfig(1)
}
}

if(theTask.name.equalsIgnoreCase("Release")){
theTask.doFirst {
modifyAssetsConfig(0)
}
}

if(theTask.name.equalsIgnoreCase("Yufa")){
theTask.doFirst {
modifyAssetsConfig(2)
}
}
}

/**
* 修改example.json
* @param type 0-release 1-debug 2-yufa
* @return
*/
def modifyAssetsConfig(int type){
def assetDir= new File(project.projectDir.absolutePath+"/src/main/assets")

def configText=new File(assetDir.absolutePath+"/ct108sdkconfig.json")

String jsonStr = "";
if(type == 1){//测试
jsonStr = "{str1}";
}else if(type == 0){//正式
jsonStr = "{str2}";
}else if(type == 2){//预发
jsonStr = "{str3}";
}
println("type:"+type)
configText.setText(jsonStr, "utf-8")
}


正确的配置如下:
tasks.whenTaskAdded { theTask ->
println("theTask.name:"+ theTask.name + " " + theTask.group)
if(theTask.name.equalsIgnoreCase("mergeDebugAssets")){
theTask.doFirst {
modifyAssetsConfig(1)
}
}

if(theTask.name.equalsIgnoreCase("mergeReleaseAssets")){
theTask.doFirst {
modifyAssetsConfig(0)
}
}

if(theTask.name.equalsIgnoreCase("mergeYufaAssets")){
theTask.doFirst {
modifyAssetsConfig(2)
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gradle Assets 打包配置