def addOneFileToApkRoot(apk, srcFile): if not file_utils.isExistFile(apk): log_utils.getLogger().debug('%s not exist' % apk) return False if not file_utils.isExistFile(srcFile): log_utils.getLogger().debug('%s not exist' % srcFile) return False with zipfile.ZipFile(apk, 'a', zipfile.ZIP_DEFLATED) as f: name = os.path.basename(srcFile) if name in f.namelist(): log_utils.getLogger().debug('%s was existed in root' % name) return False else: f.write(srcFile, name) log_utils.getLogger().debug('addOneFileToApkRoot done') return True
def addRootFileToApkRoot(apk, srcDir, ignoreList=[ 'AndroidManifest.xml', 'apktool.yml', 'plugin.xml', 'script.py', 'script.pyo', 'script.pyc' ]): if not file_utils.isExistFile(apk): return False if not file_utils.isExistDir(srcDir): return False with zipfile.ZipFile(apk, 'a', zipfile.ZIP_DEFLATED) as f: name_list = f.namelist() for file in os.listdir(srcDir): targetFile = os.path.join(srcDir, file) if os.path.isfile(targetFile): if file in ignoreList: # 如果在忽略列表中 log_utils.getLogger().debug( 'addRootFileToApkRoot: %s is in the ignore list' % file) continue if file in name_list: log_utils.getLogger().warning( 'addRootFileToApkRoot :%s is in the name_list, zipFile %s has a same name file!' % (file, apk)) raise PackException( pack_exception.ZIP_DEFLATED_ADD_FILE_EXCEPTION, 'addRootFileToApkRoot :%s is in the name_list, zipFile %s has a same name file!' % (file, apk)) else: f.write(targetFile, file) else: continue return True
def addFilesToApkRoot(apk, srcDir): if not file_utils.isExistFile(apk): log_utils.getLogger().debug('%s not exist' % apk) return False if not file_utils.isExistDir(srcDir): log_utils.getLogger().debug('%s not exist' % srcDir) return False with zipfile.ZipFile(apk, 'a', zipfile.ZIP_DEFLATED) as f: name_list = f.namelist() for parent, dirnames, filenames in os.walk(srcDir): for file in filenames: sourceFile = os.path.join(parent, file) targetFile = sourceFile[len(srcDir):] if targetFile in name_list: log_utils.getLogger().debug('%s was existed in root' % targetFile) return False else: f.write(sourceFile, targetFile) log_utils.getLogger().debug('add file %s to apk root' % targetFile); return True