写了一个公共方法,方便以后使用:
public static void changeICONName(File file, String packagename) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder db;
try {
db = factory.newDocumentBuilder();
Document doc = db.parse(file);
//application在改变包名的时候要改为manifest
NodeList nl = doc.getElementsByTagName("application");
// 只有一个node,即 manifest
// item(0)即为 manifest。
Node node = nl.item(0) ;
// 获得manifest的各个属性
NamedNodeMap map = node.getAttributes();
// //android:icon在改变包名的时候要改为package,NodeValue要填入你的包名
map.getNamedItem("android:icon").setNodeValue("@drawable/"+packagename);
// 写
saveXml(file, doc);
} catch (Exception e) {
e.printStackTrace();
}
}
private static void saveXml(File file, Document doc) {
TransformerFactory transFactory = TransformerFactory.newInstance();
try {
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty("indent", "yes");
DOMSource source = new DOMSource();
source.setNode(doc);
StreamResult result = new StreamResult();
result.setOutputStream(new FileOutputStream(file));
transformer.transform(source, result);
} catch (Exception e) {
e.printStackTrace();
}
}使用:
File file = new File("E:\\test_11111111\\AndroidManifest.xml");
changeICONName(file, "icon_myself");