环境:Ubuntu 18.04.4 LTS
Mono版本:mono-unity-2019.2-mbe
技巧:如果github速度慢,可以先拉到gitee上,之后到gitee上clone
注意:如果是直接下载的zip包,解压之后检查mono/external/bdwgc文件夹是否为空,是的话,到主干把bdwgc里面的内容全部down下来。
NDK版本:android-ndk-r16b-linux-x86_64
开始 1、卸载旧版本mono编译环境sudo apt-get --purge remove mono-runtime
sudo apt-get autoremove
2、安装新版本mono编译环境 官网地址sudo apt install gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update
sudo apt install mono-devel
3、安装必要的工具autoconf automake libtool libtool-bin git cmake python
4、为了方便后面执行脚本,获取mono文件夹权限:sudo chmod -R 777 monodir
5、cd到mono/external/buildscripts下执行./build_runtime_android.sh
第一次执行的时候,会提示克隆mono-build-tools-extra这么一个文件,但貌似仓库已经没有这玩意儿了,这时直接Ctrl+Z强制结束就行了。
接着再build一次会download roslyn-csc-linux,但一直busy,还是Ctrl+Z结束。
将ndk解压到下面的路径
mono/external/buildscripts/artifacts/Stevedore/android-ndk-r16b
将usr/bin目录下的libtool、libtoolize两个文件copy到下面的路径(无则新建)
mono/external/buildscripts/artifacts/Stevedore/built-tools/bin/
再次执行
./build_runtime_android.sh
a few moments later...
release版本默认编译出来的libmonobdwgc是debug版本,大小16M,是原版的3倍。
关于如何确定debug或release,可以用下面的命令查看
readelf -S libmonobdwgc-2.0.so
列出的信息中如果含有debug之类的就是debug版本库
网上有很多帖子里面都有如何编译release的方法,但这些方法在此mono版本中无一适用,具体原因不明。
解决方案:先编译出默认的debug版本,然后手动strip,剥离掉debug部分。
查看build.pl可以发现android库的编译工具链在android-ndk-r16b/toolchains/arm-linux-androideabi-clang/bin
进入上面的目录,执行:
./arm-linux-androideabi-strip /home/shen/Desktop/build/libmonobdwgc-2.0.so
看到strip后的文件大小已经跟原版相仿了,并且其中已经没有debug之类的信息
把最终的libmonobdwgc替换到Unity安装目录,打个空包跑一下,暂无异常!
结束把加密代码加上,重新按照build流程来一次即可,过程不再赘述。