在python中更改android manifest中的versionCode并保存文件

时间:2012-10-11 13:40:09

标签: android python xml xpath xml-parsing

我正在尝试自动更改我的VersionCode以匹配SVN的内部版本号。我正在使用python来解析Android Manifest并尝试将文件保存回来。

我正在使用Element树以这种方式查找特定节点

def setVersionCode(fileName,versionCode):
    ET.register_namespace("android", "http://schemas.android.com/apk/res/android")
    tree = ET.ElementTree() 
    tree.parse(fileName)
    root = tree.getroot() #This returns the root node
    root.attrib["{http://schemas.android.com/apk/res/android}versionCode] " #This gives me the current Version code

然后像这样称呼它

setVersionCode(pathToTheManifest,"500")

我想将versionCode设置为500(示例)并将文件保存回相同的fileName路径,而不会丢失任何Manifest格式或xml数据。 我该怎么做呢 ?

我知道这有效

 root.attrib["{http://schemas.android.com/apk/res/android}versionCode] " = versionCode

因为当我执行ET.dump时它会显示已更改的文件。但是如何从这里将它保存回同一个地方而不会丢失数据或格式?

1 个答案:

答案 0 :(得分:0)

尝试使用write方法

def setVersionCode(fileName,versionCode):
    ET.register_namespace('android', 'http://schemas.android.com/apk/res/android')
    tree = ET.parse(fileName)
    root = tree.getroot();
    root.attrib["{http://schemas.android.com/apk/res/android}versionCode"] = versionCode
    tree.write(fileName)