文采不好,你们将就看一下吧,都是本人亲测(之前也是绕了很多弯路)
虚拟机使用的是VMware 链接https://pan.baidu.com/s/12Y9IkG1eJkMd0ToeotodlQ 安装的话自己百度一下
我此次使用的是mono-unity-5.6 (5.3也试了可以)
百度云链接https://pan.baidu.com/s/1g1hMi1_I-8v_JFKa787UsA
Git链接 https://github.com/Unity-Technologies/mono/tree/unity-5.6
参考:
https://blog.csdn.net/qq_22393417/article/details/53406048
http://csftech.logdown.com/posts/452269-android-unity-encryption
https://www.cnblogs.com/lijiajia/p/7822571.html
试了一天windows下没有编译成功,果断转向linux
ubuntu版本16.04.5 32位 链接https://pan.baidu.com/s/1IPF3F8-AUFZNtbn6fN2AGg
虚拟机安装ubuntu系统请自己百度 ubuntu打开终端命令Ctrl+Alt+T
装好系统,先把屏幕设置成从不熄灭(自己找一下我忘了)
我这装Vmware tools一直失败,也没去搞了,直接在ubuntu中打开自带浏览器git了一份mono-unity-5.6 ,大概80M左右
完事后下载的是zip格式,找到把它手动复制到/Home/这个文件夹下面,之后解压
Ubuntu 16.04 已经自动安装了unzip 软件,解压命令:
unzip mono-unity-5.6.zip
2) 如果没有安装unzip,可以使用下面的命令安装:
sudo apt install unzip
3) 安装unrar软件
sudo apt install unrar
4) 解压rar文件:
unrar x FileName.rar
解压完成后 打开终端 输入cd mono-unity-5.6 敲回车,之后在输入./autogen.sh 然后看提示缺什么库就装什么库,最后出现
Now type ‘make’to compile这一行字的时候就代表基本全部都装完了,还需要装个git
懒得执行上一步可直接装这些库,这是我自己安装的库 automake libtool* bison glib2.0 git
打开终端输入sudo apt-get install automake libtool* bison glib2.0 git 然后敲回车(libtool后面有个星号记得别丢了)
全部安装完毕后,进入到/home/yourcomputername/external/buildscripts/build_runtime_android.sh点击打开
找到perl ${BUILDSCRIPTS}/PreparAndroidSDK.pl -ndk=r10e -env=envsetup.sh && source envsetup.sh这句
这句可以看出NDK的是r10e,所以我们就遵循这个下载和修改ndk,如果需要编译其他版本的libmono.so也是进入到这里看对应的ndk
之后就是配置待会即将下载的ndk环境了,按照网上说的手动下载对应ndk并配置,一直编译不成功,所以这块我就采用让它自己下载
配置对应ndk环境
打开终端输入gedit ~/.bashrc敲回车
在打开的文本最后一行敲回车然后输入export ANDROID_NDK_ROOT=/home/yourname/android-ndk_auto_r10e 之后保存关闭
在终端输入source ~/.bashrc敲回车
测试ndk是否配置成功,终端输入 echo $ANDROID_NDK_ROOT敲回车,出现/home/yourname/android-ndk_auto_r10e代表OK
打包debug版本:
修改/home/yourcomputername/external/buildscripts/build_runtime_android.sh文件
把KRAIT_PATCH_PATH="${CWD}/../../android_krait_signal_handler/build"这句替换成
KRAIT_PATCH_PATH="${CWD}/external/android_krait_signal_handler/build"
注掉这两句(不然会编译很慢):
clean_build "$CCFLAGS_ARMV5_CPU" "$LDFLAGS_ARMv5" "$OUTDIR/armv5"
clean_build "$CCFLAGS_ARMV6_VFP" "$LDFLAGS_ARMv5" "$OUTDIR/armv6_vfp"
最前面加#表示注掉
例如:#clean_build "$CCFLAGS_ARMV5_CPU" "$LDFLAGS_ARMv5" "$OUTDIR/armv5"
弄好了之后把这个文件手动复制到mono-unity-5.6目录下
打开终端输入sudo ./build_runtime_android.sh敲回车,首先下载对应的ndk,然后就是等待。。。等出错了再往后看
打包release版本:
修改/home/yourcomputername/external/buildscripts/build_runtime_android_x86.sh文件
把-fpic -g \改为-fpic \
修改/home/yourcomputername/external/buildscripts/build_runtime_android.sh文件
把KRAIT_PATCH_PATH="${CWD}/../../android_krait_signal_handler/build"这句替换成
KRAIT_PATCH_PATH="${CWD}/external/android_krait_signal_handler/build"
注掉这两句(不然会编译很慢):
clean_build "$CCFLAGS_ARMV5_CPU" "$LDFLAGS_ARMv5" "$OUTDIR/armv5"
clean_build "$CCFLAGS_ARMV6_VFP" "$LDFLAGS_ARMv5" "$OUTDIR/armv6_vfp"
把-fpic -g -funwind-tables \ 这句改成-fpic -O2 -funwind-tables \ (那个不是零是大写的‘o’)
弄好了之后把这个文件手动复制到mono-unity-5.6目录下
打开终端输入sudo ./build_runtime_android.sh敲回车,首先下载对应的ndk,然后就是等待。。。等出错了再往后看
会出一个C什么什么的错误(忘了),反正这个错误是最能出的,很烦,这两天一直出这个
现在就告诉你怎么解决:
打开/home/yourcomputername/mono-unity-5.6/external/android_krait_signal_handler/build/build.pl这个文件
如果加锁打开后不能保存,请使用终端打开
sudo gedit /home/yourcomputername/mono-unity-5.6/external/android_krait_signal_handler/build/build.pl
点上面的那个打开就可以选择你的这个文件了,然后按下图修改,修改完,保存,关闭
再次打开终端输入sudo ./build_runtime_android.sh敲回车,出去抽根烟静静等待几分钟,就会出现Build SUCCESS!
恭喜你,成功了,然后去/home/yourcomputername/mono-unity-5.6/builds/embedruntimes/android下面那俩文件夹找自己需要的libmono.so拷出来吧
PS:记住一定要弄清ubuntu的文件路径格式,每次终端输入都要根据自己需要执行的文件路径来