环境:
操作系统:Mac OSX10.12.6
mono版本:unity4.6
NDK版本:android-ndk-r10e
1.下载unity-mono分支版本:4x-5.x-2019。
https://github.com/Unity-Technologies/mono/tree/unity-4.6
2.下载AndroidNDK。
https://developer.android.google.cn/ndk/downloads/older_releases.html?#ndk-16b-downloads。下载对应的版本,不然会有各种坑,版本在mono目录按下的
external/buildscripts/build_runtime_android.sh中可以看到
3.在下载的mono路径下运行:
./external/buildscripts/build_runtime_android.sh
3.1运行过程中会自动git
android_krait_signal_handler项目,项目中默认会使用最新的ndk版本,在build.pl中将版本号修改为自己的ndk版本。
4.运行过程中缺少各种插件,安装其他插件: brew install automake;brew install libtool 。
5.运行过程中perl路径缺少,配置perl路径:whereis perl查看路径地址,替换build.pl第一行。
6.builds/embedruntimes/android,目录下会生成相关so文件。
———————————————华丽的分割线
—————————————
下面是重新编写mono的加载以及dll的加密解密过程。
1.在目录 mono/metadata/image.c中找到函数接口“
mono_image_open_from_data_with_name”(不同版本接口可以能不一样)。添加解密代码:
1.1重新运行build_runtime_android.sh,生成新的libmono.so。
2.写一段简单dll加密的代码,编译运行即可。
gcc -c main.c
gcc main.o -o main
./main
9.最后生成加密后的dll
10.将新生成的libmono和加密后的dll替换到原来Android工程里面的文件即可。
PS:Windows系统交叉编译听说有很多坑。
参考:
http://macgou.com/archives/4854
声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!