博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
My Python Work 2
阅读量:5275 次
发布时间:2019-06-14

本文共 3751 字,大约阅读时间需要 12 分钟。

其实这算是我用python写的第一个python脚本。技术含量并不高,写的比较low,高手就不要看了,但是确实我迈向python的第一步。由于部分原因,此次的文章中并不会把所有代码都贴出来,只是纪录一个简单的方法。还请见谅。

 

------------------------------------------------------------------------------------------------

需求说明:

1.这是一个批量出包工具

2.对一个微信已经被破解过的包进行修改,实现一台设备可以同时安装多个客户端

3.使用者可以通过往指定目录存放icon的方式实现更换原微信icon,相当于是美化作用

------------------------------------------------------------------------------------------------

 

一、实现icon替换

第一部分代码是我设置的文件夹路径,我通过os.path.exists(path)来判断用户存放icon的目录和微信客户端的icon目录是否有icon存在,如果有才使用os.system(cmd)来调用dos命令实现icon的替换

IconPath1 = 'C:\\weixin\\weixin2\\unknown\\r\h\\'IconPath2 = 'C:\\weixin\\weixin2\\unknown\\r\k\\'IconPath3 = 'C:\\weixin\\weixin2\\unknown\\r\p\\'IconPath4 = 'C:\\weixin\\weixin2\\unknown\\r\\v\\'IconName='icon.png'NewIcon1='C:\\weixin\\96\\'NewIcon2='C:\\weixin\\72\\'CmdDel = 'del 'CmdCopy='copy '#删除原目录icon文件if os.path.exists(IconPath1+IconName):    os.remove(IconPath1+IconName)if os.path.exists(IconPath2+IconName):    os.remove(IconPath2+IconName)if os.path.exists(IconPath3+IconName):    os.remove(IconPath3+IconName)if os.path.exists(IconPath4+IconName):    os.remove(IconPath4+IconName)print 'delete old icon'#导入新的icon资源if os.path.exists(NewIcon1+IconName):    os.system(CmdCopy+NewIcon1+IconName+' '+IconPath1)if os.path.exists(NewIcon1+IconName):    os.system(CmdCopy+NewIcon1+IconName+' '+IconPath2)if os.path.exists(NewIcon1+IconName):    os.system(CmdCopy+NewIcon1+IconName+' '+IconPath3)if os.path.exists(NewIcon2+IconName):    os.system(CmdCopy+NewIcon2+IconName+' '+IconPath4)print "use new icon successed"

 

二、修改可以使客户端多开的相应文件

因为部分原因,这里就不多做介绍了,这里可以看到,我对文件内容进行了逐行读取,并且使用了切片的方式,对每一行进行了相应修改(修改内容并不全在下面的代码中,部分代码未贴出,只是纪录一下修改文件的方法)。

#修改AndroidManifest.xmlAndroidManifest = open('C:\\weixin\\weixin2\\AndroidManifest.xml' , 'r+')list = AndroidManifest.readlines()list[2]='
\n'list[3]='
\n'list[4]='
\n'list[5]='
\n'list[6]='
\n'list[8]='
\n'AndroidManifest=open("C:\\weixin\\weixin2\\AndroidManifest.xml", "w+")AndroidManifest.writelines(list)AndroidManifest.close()print 'AndroidManiFest.xml changed'#修改apktool.yml文件apktool=open('C:\\weixin\\weixin2\\apktool.yml' , 'r+')list1=apktool.readlines()list1[1]='apkFileName: weixin'+str(parameter)+'.apk\n'list1[11]='rename-manifest-package: com.tencen1.mm'+str(parameter)+'\n'apktool = open("C:\\weixin\\weixin2\\apktool.yml", "w+")apktool.writelines(list1)apktool.close()print 'apktool.yml changed'print 'back to package,wait...'

 

三、回包

回包的意思就是我已经修改好了,我需要调用一些命令去将修改好的文件变成.apk这样的可安装应用。依然是调用了系统命令,不过这次我使用的是os.open(cmd),这个函数和os.system(cmd)的作用其实是一样的,都是调用dos命令,不过既然函数长的不一样,还是有一定区别的,os.open(cmd)可以将命令执行并返回结果,可以看到我逐行读取了命令返回的结果,并使用for循环来逐行对返回的结果进行输出展示,可以让用户实时查看回包进度。

cmd='apktool b C:\\weixin\\weixin2'end =(os.popen(cmd).readlines())for result in end:    print (result)

 

四、回包结束后将包转移目录

这里其实不需要多做解释,还是调用dos命令,因为我比较笨,能调用命令解决的问题绝对不会不调用命令。转移一下目录是为了让使用者更容易的找到安装包,而不是需要记住很多根目录一层一层往下找

moveApk='move C:\\weixin\\weixin2\\dist\\weixin'+str(parameter)+'.apk C:\\weixin\\ApkPackage'os.system(moveApk)print 'back to package successed,wait for signApk...'

 

五、签名,删除旧包,脚本结束

这里在脚本的编写方式上还是没有什么技术含量,但是对于签名命令的调用却是很重要的一个环节,这里调用了一个签名工具,这里不得不重点纪录一下,不然怕我这个笨脑子给忘掉了

原始命令应该为”java -jar signapk.jar testkey.x509.pem testkey.pk8  demo.apk demo(sign).apk”

signapk工具可以实现对安卓ROM和安卓应用进行签名,需要注意的是在使用signapk工具前需要安装java环境.

#签名signApk='java -jar C:\\weixin\\APKSign\\signapk.jar C:\\weixin\APKSign\\testkey.x509.pem C:\weixin\APKSign\\testkey.pk8 C:\\weixin\\ApkPackage\\weixin'+str(parameter)+'.apk C:\\weixin\\ApkPackage\\weixin'+str(parameter)+'(sign).apk'os.system(signApk)#删除ApkPacjage目录下未签名的安装包delOldApk='del C:\\weixin\\ApkPackage\\weixin'+str(parameter)+'.apk'os.system(delOldApk)print'----------signApk OK----------'

转载于:https://www.cnblogs.com/JianXu/articles/5277810.html

你可能感兴趣的文章
我就是我,不一样的browser
查看>>
结对编程 四则运算 第一周小结
查看>>
JAVA_HOME和CLASSPATH设置
查看>>
Andrew Ng机器学习课程14(补)
查看>>
【VS开发】PCIe体系结构的组成部件
查看>>
vue篇(一)
查看>>
开通了微信公众号
查看>>
Oracle 分类统计sql
查看>>
Mybatis学习链接
查看>>
Flex XML
查看>>
HDU-2476 String painter 区间DP
查看>>
任务管理器taskmgr查看几核
查看>>
去除右下角淘宝网弹窗恶意广告!
查看>>
SQL字符串替换
查看>>
Jquery 概念性内容编辑器
查看>>
VMware-workstation-full-9.0.1-894247+汉化补丁(2013.1.22)+有效密钥
查看>>
一些 Google 搜索词
查看>>
嵌入式Linux学习笔记(0)基础命令。——Arvin
查看>>
我才知道wordpress还有com和org的区别呢
查看>>
C#枚举数值与名称的转换
查看>>