123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import sys, string, os
- from xml.etree import ElementTree as ET
- from xml.dom import minidom
- classPathFile = sys.argv[1]
- pluginStr = sys.argv[2]
- pluginsDir = sys.argv[3]
- def getLibElement(pathAttr):
- ret = ET.Element('classpathentry')
- ret.set('exported', 'true')
- ret.set('kind', 'lib')
- ret.set('path', pathAttr)
- return ret
- def fomatTree(elem):
- root_str = ET.tostring(elem, 'UTF-8')
- reparse = minidom.parseString(root_str)
- return reparse
- tree = ET.parse(classPathFile)
- root = tree.getroot()
- entryNodes = root.findall('classpathentry')
- linkedLibs = []
- for node in entryNodes:
- entryKind = node.get('kind')
- entryPath = node.get('path')
- entryKind = entryKind.strip(' \n\r\t')
- entryPath = entryPath.strip(' \n\r\t')
- if entryKind == 'lib' and entryPath.endswith('.jar'):
- linkedLibs.append(entryPath)
- plugins = pluginStr.split(':')
- modified = False
- for pluginName in plugins:
- pluginAndroidDir = pluginsDir + '/' + pluginName + '/android'
-
- for fileName in os.listdir(pluginAndroidDir):
- if os.path.splitext(fileName)[1] == '.jar':
- needAdd = True
- for linkedJar in linkedLibs:
- jarName = os.path.basename(linkedJar)
- if fileName == jarName:
- needAdd = False
- break
-
- if needAdd:
- modified = True
- pathAttr = 'plugin-x/' + pluginName + '/android/' + fileName
- root.append(getLibElement(pathAttr))
- linkedLibs.append(pathAttr)
- if modified:
- f = open(classPathFile, 'w')
- fomatDom = fomatTree(root)
- fomatDom.writexml(f, '', '\t', '\n', 'UTF-8')
- f.close()
|