packTools.py

来源:互联网 发布:逻辑门电路实验数据 编辑:程序博客网 时间:2024/05/23 14:22
#!/usr/bin/python# coding=utf-8import osimport shutilimport sysimport timedef readChannelfile(filename):    f = file(filename)    while True:        line = f.readline().strip('\n')        if len(line) == 0:            break        else:            channelList.append(line);    f.close()def backUpManifest():    if os.path.exists('./AndroidManifest.xml'):        os.remove('./AndroidManifest.xml')    manifestPath = './temp/AndroidManifest.xml'    shutil.copyfile(manifestPath, './AndroidManifest.xml')def modifyChannel(value):    tempXML = ''    f = file('./AndroidManifest.xml')    for line in f:        if line.find('value="default"') > 0:            line = line.replace('value="default"', 'value="'+value+'"')        tempXML += line    f.close()    output = open('./temp/AndroidManifest.xml', 'w')    output.write(tempXML)    output.close()        backfile = r'./backXml/%s_AndroidManifest.xml'% (value)    backoutput = open(backfile, 'w')    backoutput.write(tempXML)    backoutput.close()         unsignApk = r'%s/%s_%s_unsigned.apk'% (output_apk_dir,easyName, value)    cmdPack = r'java -jar apktool.jar b temp %s'% (unsignApk)    os.system(cmdPack)        unsignedjar = r'%s/%s_%s_unsigned.apk'% (output_apk_dir,easyName, value)    signed_unalignedjar = r'%s/%s_%s_signed_unaligned.apk'% (output_apk_dir,easyName, value)    signed_alignedjar = r'%s/%s_%s.apk'% (output_apk_dir,easyName, value)    cmd_sign = r'jarsigner -verbose -keystore %s -storepass %s -signedjar %s %s %s'% (keystore, storepass, signed_unalignedjar, unsignedjar, alianame)    cmd_align = r'./zipalign -v 4 %s %s' % (signed_unalignedjar, signed_alignedjar)    os.system(cmd_sign)    os.remove(unsignedjar)    os.system(cmd_align)    os.remove(signed_unalignedjar)    channelList = []apkName = sys.argv[1]easyName = apkName.split('.apk')[0]keystore=sys.argv[2]storepass='123456'alianame='111'#output_apk_dir="./bin"output_apk_dir=r'./%s'% (easyName)if os.path.exists(output_apk_dir):    shutil.rmtree(output_apk_dir)readChannelfile('./channel')print '-------------------- your channel values --------------------'print 'channel list: ', channelListcmdExtract = r'java -jar apktool.jar  d -f -s %s temp'% (apkName)os.system(cmdExtract)backUpManifest()for channel in channelList:    modifyChannel(channel)    time.sleep(1)if os.path.exists('./temp'):    shutil.rmtree('./temp')if os.path.exists('./AndroidManifest.xml'):    os.remove('./AndroidManifest.xml')print '-------------------- Done --------------------'

0 0
原创粉丝点击