这今天在网上搜索了许多资料,发现打多渠道包都是在AndroidManifest.xml中替换渠道名称与渠道号,而我们打得渠道包的渠道号存放在partner.xml文件中,于是我就想build.gradle能不能读取partner.xml文件呢,事实证明是可以的。
1.首先groovy支持java,那么用java读取txt文件还是很容易的,这样把渠道名跟渠道号就读取进去了。
2.用渠道号替换partner.xml文件中的渠道号就可以了。
代码如下:
//替换partner.xml中的id为渠道号
String encoding="GBK";
File file = new File("assets/type.txt");
InputStreamReader read = new InputStreamReader(
new FileInputStream(file),encoding);
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
while((lineTxt = bufferedReader.readLine()) != null){
//System.out.println(lineTxt);
String[] channel =lineTxt.split(",")
System.out.println(channel[0]+"——"+channel[1]);
}
task replaceId(type:Copy){
from("assets"){
include "partner.xml"
}
into("aaa")
filter{
String line -> line.replaceAll("123aaa", "123456")
}
}
上面的代码无法替换xml文件中的渠道号,需要继续优化
一、使用groovy解析XML文件
a) xml文件内容
<langs type="current">
<language>Java</language>
<language>Groovy</language>
<language>JavaScript</language>
</langs>
b)groovy解析xml代码:
def langs = new XmlParser().parse("languages.xml")
println "type = ${langs.attribute("type")}"
langs.language.each{
println it.text()
}
//output:
type = current
Java
Groovy
JavaScript
1.首先groovy支持java,那么用java读取txt文件还是很容易的,这样把渠道名跟渠道号就读取进去了。
2.用渠道号替换partner.xml文件中的渠道号就可以了。
代码如下:
//替换partner.xml中的id为渠道号
String encoding="GBK";
File file = new File("assets/type.txt");
InputStreamReader read = new InputStreamReader(
new FileInputStream(file),encoding);
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
while((lineTxt = bufferedReader.readLine()) != null){
//System.out.println(lineTxt);
String[] channel =lineTxt.split(",")
System.out.println(channel[0]+"——"+channel[1]);
}
task replaceId(type:Copy){
from("assets"){
include "partner.xml"
}
into("aaa")
filter{
String line -> line.replaceAll("123aaa", "123456")
}
}
上面的代码无法替换xml文件中的渠道号,需要继续优化
一、使用groovy解析XML文件
a) xml文件内容
<langs type="current">
<language>Java</language>
<language>Groovy</language>
<language>JavaScript</language>
</langs>
b)groovy解析xml代码:
def langs = new XmlParser().parse("languages.xml")
println "type = ${langs.attribute("type")}"
langs.language.each{
println it.text()
}
//output:
type = current
Java
Groovy
JavaScript