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
- packTools.py
- py
- py
- py
- py
- py
- py
- py
- Py
- bin2hex.py && hex2bin.py
- web.py (url.py)
- [py]py存放家具
- Xctf之调皮的py-py-py
- dir_size.py
- sendEmail.py
- Html.py
- web.py
- mail.py
- 微信关注回复代码
- Oracle 三种方法
- Unity3d项目工程批量打包
- mysql只导出建表语句
- 仿微信6.0笔记
- packTools.py
- 19. jQuery 遍历
- Linux 中mysql 安装 导入
- iOS开发有关头像上传的问题
- 找出字符串
- 【转】Android示例HelloGallery中R.styleable unresolved的解决办法
- Android中的属性动画
- MotionEvent的getX(),getY()与getRawX(),getRawY()的区别
- Intint.Parse()int.TryParse()Convert.toInt32()