1

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

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

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 时,它会显示更改后的文件。但是如何在不丢失数据或格式的情况下将其从这里保存回同一个地方?

4

1 回答 1

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)
于 2015-04-30T14:46:21.910 回答