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)
}
}
}
以使得打正式包/测试包/预发包的时候,不需要再手动改配置文件。
我先是这么写的:
发现虽然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)
}
}
}
相关文章推荐
- 不改ueditor源码,通过修改配置文件,实现图片放到工程外目录
- Ubuntu通过修改配置文件进行网络配置
- Ubuntu通过修改配置文件进行网络配置
- as通过gradle实现多渠道打包+使用配置文件进行版本管理+指定apk输出路径和apk文件名
- javaweb工程无需修改配置文件多环境热加载部署,
- Ubuntu通过修改配置文件进行网络配置
- Ubuntu通过修改配置文件进行网络配置
- as通过gradle实现多渠道打包+使用配置文件进行版本管理+指定apk输出路径和apk文件名
- Gradle根据部署环境引用不同的配置文件进行打包
- 【转】Ubuntu通过修改配置文件进行网络配置
- Ubuntu通过修改配置文件进行网络配置
- Ubuntu通过修改配置文件进行网络配置
- as通过gradle实现多渠道打包+使用配置文件进行版本管理+指定apk输出路径和apk文件名
- Ubuntu通过修改配置文件进行网络配置
- Ubuntu通过修改配置文件来进行网络配置
- Ubuntu通过修改配置文件进行网络配置
- (转)WEB程序打包详解:(连接SQL2005数据库,修改配置文件,建立虚拟目录)
- WAMP环境配置,主要是配置文件的修改
- tomcat环境中修改了server.xml配置文件后不起作用
- 在封装过程中通过修改注册表更改用户配置文件的默认路径 推荐