下载好apktool文件后,在当前文件夹右键+shift
D:\www\fan>java -jar .\apktool_2.11.0.jar d .\gyyx-app-5.0.8.apk
https://www.jb51.net/article/32888.htm
做软件分身的话
修改AndroidManifest.xml里面的
package=“修改名称”
2、修改AndroidManifest.xml中的包名,
将package后面的包名com.tencent.qbx改为你想要的新包名,我改为了com.tianxiao.tencentweb
将涉及原包名的com.tencent.qbx的相关activity的声明中的包名均改为新包名com.tianxiao.tencentweb
至于intent-filter里面的action名中包含原包名的,则可以不改,如果改的话,代码中也要相应的改变
另外,如果有provider,provider的authorities也得改,这个在同一手机上必须唯一,否则安装会失败
3、在E:\apkTool\qq4\smali目录下,有很多子目录,子目录下的文件多以smali结尾,这中文件的语法有点类似于汇编语言,具体原理就不深究了。
将smali目录下的所有文件中的原包名的声明形式com/tencent/qbx改为新包名com/tianxiao/tencentweb
具体如下,用UEdit在文件中替换即可,将目标目录指向E:\apkTool\qq4\smali,这个将近1000条左右
如果之前改为action里面的包名,也要将字符串形式的包名com.tencent.qbx改为com.tianxiao.tencentweb
如果有provider也要讲原来的authorities值改为在AndroidManifest.xml中新改的authorities值。
4、将E:\apkTool\qq4重新打包为apk
apktool b qq4 newqq.apk
5、将新的newqq.apk 重新签名
签名的方法很多,一主要是手动生成签名,用命令行签名
我采用的现成的,下载了一个Auto-sign的文件夹,进行了签名,这个比较简单,网上帖子很多,就不赘述。
新签名后的apk名为 newqq4signed.apk
修改好之后
D:\www\fan>java -jar .\apktool_2.11.0.jar b .\gyyx-app-5.0.8\ -o gyyx001.apk
keytool生成秘钥
签名
- 生成签名文件(如果没有)
- 如果还没有签名文件,可以使用Java的
keytool
命令来生成。例如:keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -validity 365 -keystore mykeystore.jks
- 这个命令会生成一个名为
mykeystore.jks
的密钥库文件,其中包含一个别名为myalias
的密钥对,有效期为365天。需要记住设置的密码,因为在签名过程中会用到。
- 如果还没有签名文件,可以使用Java的
- 签名APK
- 可以使用
jarsigner
命令来签名APK。例如:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore mykeystore.jks [重新打包后的APK文件名].apk myalias
- 其中,
-verbose
选项会显示签名的详细过程,-sigalg
和-digestalg
指定了签名算法,-keystore
指定了密钥库文件的位置,myalias
是密钥库中的别名,最后是要签名的APK文件名。
- 可以使用
https://juejin.cn/post/7435584321866104868