环境:
操作系统:Mac OSX10.12.6
mono版本:unity.1.3p4
NDK版本:android-ndk-r10e
一.指导步骤:
1.通过apktool工具反编译apk
2.修改反编译得到的dll文件,嵌入版本号
3.通过apktool工具重新打包apk
4.通过jarsigner工具重新签名新的apk
二.实现细节
0.所有的文件存储在xxx/reapk目录下
1.apktool工具获取:https://ibotpeaches.github.io/Apktool/install
2.右击wrapper script,链接存储为apktool。设置可执行状态
命令行设置:chmod 777 apktool
3.然后点击find newest here下载apktool.jar
4.反编译android_tmp.apk,生成的内容在android_tmp目录
cd xxxx/reapkecho Shall目录$0echo 执行目录$(pwd)echo $0 >> TestShell2.logapktool d android_tmp.apk
5.修改dll,并生成新的dll,覆盖旧的, version.txt存储当前版本号,每次生成新包时再Unity3d自动更新
cd xxx/reapkecho Shall目录$0echo 执行目录$(pwd)echo $0 >> TestShell2.logrm -rf Assembly-CSharp.dllcat version.txt | while read versiondo# echo "version:"$versionecho 版本号$versioncd xxx/reapkecho -n $version>Assembly-CSharp.dllcat android_tmp/assets/bin/Data/Managed/Assembly-CSharp.dll>>Assembly-CSharp.dllcp Assembly-CSharp.dll android_tmp/assets/bin/Data/Managed/Assembly-CSharp.dlldone
6.重新打包
cd xxx/reapkecho Shall目录$0echo 执行目录$(pwd)echo $0 >> TestShell3.logapktool b android_tmp
7.重新签名:
#!/bin/bashcd xxx/reapkecho Shall目录$0echo 执行目录$(pwd)echo $0 >> TestShell1.logjarsigner -verbose -keystore xxx/totem.jks -storepass store9527 -keypass key9527 -signedjar signed_apk.apk android_tmp/dist/android_tmp.apk com.packagename.lala -digestalg SHA1 -sigalg MD5withRSA
8.写一个一键生成脚本:
cd xxx/reapk./apk_unapk.sh./apk_changedll.sh./apk_reapk.sh./apk_sign.shrm -rf android_tmpexit 1
9.生成结果如下:
后记:本篇重点是重新修改dll、重新打包、重新签名,如果想实际使用需要结合《重新编译mono——Android动态更新dll》(/i6694897994073899531/)一起使用。
参考:/developer/article/1335295