环境:
操作系统:Mac OSX10.12.6
mono版本:unity2017.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/reapk echo Shall目录$0 echo 执行目录$(pwd) echo $0 >> TestShell2.log apktool d android_tmp.apk
5.修改dll,并生成新的dll,覆盖旧的, version.txt存储当前版本号,每次生成新包时再Unity3d自动更新
cd xxx/reapk echo Shall目录$0 echo 执行目录$(pwd) echo $0 >> TestShell2.log rm -rf Assembly-CSharp.dll cat version.txt | while read version do # echo "version:"$version echo 版本号$version cd xxx/reapk echo -n $version>Assembly-CSharp.dll cat android_tmp/assets/bin/Data/Managed/Assembly-CSharp.dll>>Assembly-CSharp.dll cp Assembly-CSharp.dll android_tmp/assets/bin/Data/Managed/Assembly-CSharp.dll done
6.重新打包
cd xxx/reapk echo Shall目录$0 echo 执行目录$(pwd) echo $0 >> TestShell3.log apktool b android_tmp
7.重新签名:
#!/bin/bash cd xxx/reapk echo Shall目录$0 echo 执行目录$(pwd) echo $0 >> TestShell1.log jarsigner -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.sh rm -rf android_tmp exit 1
9.生成结果如下:
后记:本篇重点是重新修改dll、重新打包、重新签名,如果想实际使用需要结合《重新编译mono——Android动态更新dll》(https://www.toutiao.com/i6694897994073899531/)一起使用。
参考:https://cloud.tencent.com/developer/article/1335295
,