前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

重新编译mono——修改apk中Assembly-CSharp.dll并重新打包

qiguaw 2024-11-01 13:04:31 资源文章 36 ℃ 0 评论

环境:

操作系统: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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表