重新编译mono-unity-5.6中的libmono.so文件

文采不好,你们将就看一下吧,都是本人亲测(之前也是绕了很多弯路)

虚拟机使用的是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

点上面的那个打开就可以选择你的这个文件了,然后按下图修改,修改完,保存,关闭

重新编译mono-unity-5.6中的libmono.so文件_第1张图片

再次打开终端输入sudo ./build_runtime_android.sh敲回车,出去抽根烟静静等待几分钟,就会出现Build SUCCESS!

恭喜你,成功了,然后去/home/yourcomputername/mono-unity-5.6/builds/embedruntimes/android下面那俩文件夹找自己需要的libmono.so拷出来吧

PS:记住一定要弄清ubuntu的文件路径格式,每次终端输入都要根据自己需要执行的文件路径来

 

 

你可能感兴趣的:(Unity)