zoukankan      html  css  js  c++  java
  • 编译UNITY的MONO模块记录

    起因

    接收到一个UNITY文件处理的任务(c#逻辑代码存放的Assembly-CSharp.dll可热更等需求)

    需要重新编译UNITY的mono模块 用于安卓环境下对DLL的定制处理

    上网查阅了一些资料,经过多次尝试,得出以下编译成功的环境

    ubuntu 16 32位(32位推荐 似乎脚本在X64处理有些问题)

    gcc 4.8以上

    glib  2.0 以上

    我采用的虚拟机安装unbuntu 32位系统

    准备

    1 首先 sudo apt-get udpdate 刷新更新源

    2 然后批量安装自己所需要的软件

    sudo apt-get install autoconf automake bison build-essential gettext git libglib2.0 libtool* perl

    3 配置NDK的环境,配置步骤 因为在错误的尝试中,MONO脚本会下载NDK到默认位置 所以我直接使用该文件路径 /home/userXXX/android-ndk_auto-r10e    (userXXX是自己的用户名)

    在终端输入sudo gedit ~/.bashrc。打开环境变量配置文件。

    填写环境变量 

    NDK_ROOT=/home/userXXX/android-ndk_auto-r10e 

    NDK=$NDK_ROOT

    ANDROID_NDK_ROOT=$NDK_ROOT

    export NDK_ROOT NDK ANDROID_NDK_ROOT

    所需要的文件安装

    我们需要预先准备NDK 和 mono-unity的源码文件夹(我尝试过mono-unity5.6 /mono-unity2018.3/ mono-unity2017.4三个版本) 

    根据自己UNITY版本选择不同的mono源码版本

    NDK选择r10e版本 因为是x86版本32位系统所以也选择x86版本的NDK 自己解压/home/userXXX/android-ndk_auto-r10e 或者待会执行MONO编译脚本 自行下载

    源码文件夹之前最好再多出两个文件夹进行放置  路径类似于 /rootpath/1/2/mono-unity-code

    因为mono源码脚本向上两个文件夹建立一个编译NDK的文件目录

    1 下载的mono-unity文件夹中。找到build_runtime_android.sh文件。具体位置在mono-unity-codeexternaluildscripts文件夹中。把他放在mono-unity-code根目录中。

    2 打开 build_runtime_android.sh文件。在15行perl ${BUILDSCRIPTSDIR}/PrepareAndroidSDK.pl -ndk=r10e -env=envsetup.sh && source envsetup.sh中。 -ndk=r10e描述的是所需ndk版本。

    3 修改build_runtime_android.sh文件内容:

    在文件第6行的export ANDROID_PLATFORM=android-9下面添加export ANDROID_NDK_ROOT=/home/userXXX/android-ndk_auto-r10e 。为防止不必要的错误,手动指定ndk目录。
    如果出现无法找到 envsetuo.sh文件的错误。则需要手动指定envsetuo.sh文件所在目录。第15行perl ${BUILDSCRIPTSDIR}/PrepareAndroidSDK.pl -ndk=r10e -env=envsetup.sh && source envsetup.sh末端的``source中直接指定文件目录
    source xxxxxxxxmono-unity-codeenvsetup.sh

    在文件第74行:-fpic -g -funwind-tables 中。把-g改为-O2(O0,O1,O2,O3分为好几个压缩档次)。通过更改这个可以编译出release版本。会比debug版本体积更小。

    4 修改build_runtime_android_x86.sh文件内容:

    在mono-unity-codeexternaluildscripts文件夹中找到:build_runtime_android_x86.sh文件。打开准备修改。
    同build_runtime_android.sh的修改一样。在第6行下面添加NDK目录:export ANDROID_NDK_ROOT=/home/userXXX/android-ndk_auto-r10e
    修改第71行:-fpic -g。去掉-g改为-fpic 。为了防止x86下的手机进入游戏卡顿的情况。

    检查编译所需环境是否合格。

    1 方法一:打开终端。cd 到mono-unity-code目录中,使用管理员权限执行autogen.sh文件。命令为:sudo ./autogen.sh。这是个批处理文件,帮我们检查编译mono-unity所需要的环境。如果出现缺失库的错误,那么根据错误进行相应修改和安装。这个文件会帮你执行configure,make,make clean,make distclean等命令。
    方法二:在终端中cd到mono-unity目录中。使用管理员权限执行sudo ./configure --prefix=/usr/bin命令。也是检查编译环境是否合格,如何没有合格,会报错。如果合格,则会他提示你执行make指令。到了这步,说明你的环境大致安装完成了。
    开始第一次编译。管理员身份执行复制在mono-unity-code根目录下的build_runtime_android.sh文件,命令为:sudo ./ build_runtime_android.sh。不要使用"sudo sh build_runtime_android.sh "去执行。第一次编译通常情况下都会碰到/usr/bin/env: perl -w: No such file or directory的错误。没关系。这次编译只是为了下载krait-signal-handler依赖文件。

    2 打开刚才下载的krait-signal-handler文件夹。找到里面的build.pl文件。修改第一行#!/usr/bin/env perl -w为#!/usr/bin/perl -w

    3 用/mono-unity-code/external/buildscripts/目录下的PrepareAndroidSDK.pm替换/krait-signal-handler/目录下的PrepareAndroidSDK.pm

    4 修改/krait-signal-handler/文件夹下文件build.pl 该文件NDK版本号有错误

    5 修改/krait-signal-handler/jni/文件夹下文件Application.mk .修改安卓版本号为9 修改工具链版本 4.8 (我没有使用clang)

    编译

    1 在mono-unity-code根目录下,再次编译,管理员身份执行复制在mono-unity-code根目录下的build_runtime_android.sh文件,命令为:sudo ./ build_runtime_android.sh

    2 不出意外的话 应该就会编译成功了

     

    unity 老版本mono 编译务必使用X86 linux 

    windows编译unity mono , 使用VS2010 可以避免很多不必要的麻烦

    打开Visual Studio Command Prompt(2010)

    进入mono-unity-4.5msvc目录

    执行msbuild.exe mono.sln /p:Configuration=Release_eglib

     https://github.com/xxtea/xxtea-c

    参考

    https://blog.csdn.net/huutu/article/details/50829828

    https://blog.csdn.net/kitok/article/details/72472142

    https://www.cnblogs.com/lijiajia/p/7822571.html

    https://blog.csdn.net/KiTok/article/details/71404711?locationNum=6&fps=1

    https://blog.csdn.net/kitok/article/details/72472142

    https://blog.csdn.net/qq_27772057/article/details/51945700

    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    LeetCode120 Triangle
    LeetCode119 Pascal's Triangle II
    LeetCode118 Pascal's Triangle
    LeetCode115 Distinct Subsequences
    LeetCode114 Flatten Binary Tree to Linked List
    LeetCode113 Path Sum II
    LeetCode112 Path Sum
    LeetCode111 Minimum Depth of Binary Tree
    Windows下搭建PHP开发环境-WEB服务器
    如何发布可用于azure的镜像文件
  • 原文地址:https://www.cnblogs.com/itdef/p/9851804.html
Copyright © 2011-2022 走看看