重新编译Unity Mono遇到的坑,大坑,巨坑!!!
因为项目需要,要整一个DLL热更功能,本身也想对DLL进行加密,所以需要修改Mono的代码,并重新编译。参考了网上的教程后,决定在linux下做重编的工作。
然而在实际执行的时候,一开始就碰到了巨大的坑,卡了我两天。如果你身边正好有对Linux非常熟悉的朋友,那么请他帮助你完成编译环境的部署是最好的。我们项目工程使用的是unity5.5,因此我去git上下了Unity-5.5的分支,这个分支充分证明了开源代码的坑爹之处,一会细说。
首先我参考的是这篇教程,写的不错,也很详细。
https://blog.csdn.net/qq_27772057/article/details/51945700
我先去官网下载了Ubuntu17的64位版本,当中碰到过一些错误,最后卡死在了PrepareAndroidSDK.PM无法定位到@INT地址,网上看了一下是Perl模块的问题。尝试了很多方法一直无法解决。这个折腾了我一天时间。
为了减少系统带来的影响,我决定重新下载32位Ubuntu16,果然比之前顺利了一点,但这次碰到的问题是C++编辑器无法读取二进制文件的问题。可能少了某个模块。前前后后参考了几十篇教程,把能改的都改了还是不行。不过我当时发现在mono文件根目录下有一个autogen.sh的文件,在编译之前跑一把这个文件,可以检测你当前的环境是否满足编译。这个很多教程都没有提到,我墙裂建议一定要跑。然而事实证明,就算检测通过了,也不一定能行。。。我就是案例,当时差点崩溃。
关于Mono5.5版本开源代码可能存在的坑,推荐这两篇教程,有几处的改动。
https://www.cnblogs.com/lijiajia/p/7822571.html
http://csftech.logdown.com/posts/452269-android-unity-encryption
就在我犹豫是否应该转战Windows的时候,又尝试了一下Cent OS,终于成功了。参考了这篇教程
https://blog.csdn.net/yxq408576080/article/details/47779395
需要注意的是,之前两个链接中有几处文件替换,CentOS教程中没有提到,这个要自己改一下。还有cpan下安装LWP模块,一定要确认好lwp-download是否可用;xshell其实不用安装,直接在终端输入相同的指令即可。
我在编译的时候还碰到了Can't locate File/Copy/Recursive.pm in @INC的错误,这个只要在cpan下执行install File::Copy::Recursive即可,坑爹的perl官网导致我安装好几次失败。全部装完后,编译终于成功!
最后可以参考雨松的
http://www.xuanyusong.com/archives/3553?utm_source=tuicool
编译release包。
大功告成~
重新编译Unity Mono遇到的坑,大坑,巨坑!!!的更多相关文章
- 编译UNITY的MONO模块记录
起因 接收到一个UNITY文件处理的任务(c#逻辑代码存放的Assembly-CSharp.dll可热更等需求) 需要重新编译UNITY的mono模块 用于安卓环境下对DLL的定制处理 上网查阅了一些 ...
- Windows 下使用 mingw+msys 交叉编译 Android Unity Mono
对于没有升级到 Unity5.4的用户,发布安卓版本都会有对 C# 脚本进行加密的需求,我们项目在裸奔了很长时间后,决定开始做这件事. 网上查看了很多资料,我很希望直接在 windows 下编译而不去 ...
- Unity Mono脚本 加密
加密环境 引擎版本:Unity3D 5.3.4 及更高版本 (使用Mono而并非IL2CPP) 操作系统:CentOS 6.2(Final) 加密环境:Android.IOS(暂定) 加密对象:C#源 ...
- Unity 发布到IOS,Android的各种坑
Unity 发布到IOS的注意事项1.开发环境MAC环境:Xcode环境 7.2.1Unity环境:Unity5.32.基本说明首先,我说一下,这是我在对Unity发布到IOS的实际使用中,总结出来的 ...
- 在Linux Mint13下编译安装mono运行时
最近一直想体验下mono在web开发上到底进展到什么程度,挑战一下它对web开发的极限.因为asp.net mvc本身依赖windows平台的东西不太多,所以这些assembly移植到mono/lin ...
- 我在学习Blazor当中踩的巨坑!Blazor WebAssembly调试
最近嘛,看看Blazor已经蛮成熟的.顺便想在自家的框架里使用这个东西,毕竟我还是很念旧的,而且Blazor的技术栈也不麻烦.然后呢,在调试这一关我可是踩了大坑. 我的VS是2019,很早以前装的.然 ...
- 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案
相信很多小伙伴都在android开发中遇到调用jni的各种巨坑,因为我们不得不在很多地方用到第三方库so文件,然而第三方官方通常都只会给出ADT环境下的集成方式,而谷歌亲儿子android studi ...
- 【单页应用巨坑之History】细数History带给单页应用的噩梦
前言 在我们日常的网页浏览中,我们非常喜欢做一个操作:点击浏览器的前进后退在Ajax技术出现后,有些时候前进后退就会给开发者带来困扰,甚至一些开发者试图去干掉History随着Html5的发展,移动端 ...
- bat调用bat的一个巨坑
[一个巨坑] a.bat的内容:echo 1b.batecho 2执行结果:运行a.bat时,输出1,然后调用b.bat, 但是 echo 2 显示不出来. bat怎么调用bat文件并返回? 例如主文 ...
- QJsonObject和QJsonArray的巨坑
最近用Qt的QJsonObject和QJsonArray当做类变量来存储运行信息,发现这两货真的是巨坑.让人有一种JJ fly的感觉/(ㄒoㄒ)/~~. 写了个例子来说明下: MainWindow:: ...
随机推荐
- javase我的笔记
学习java编程 |--需要遵循其语法规范 |--在其开发环境下编程 准备开发java环境 |--安装jdk |--配置jdk jdk:含义是java提供的一套开发工具,包含jre\编译器等 |--编 ...
- el-table 固定列错位问题
1. 问题描述:el-table使用固定列时,使用keep-alive后页面切换导致该列错位. 2. 解决方法:使用el-table的doLayout方法对表格进行重新布局 activated() { ...
- python笔记:list--pop与remove的区别
正常情况下: # coding=utf-8 fruit = ['apple', 'pear', 'banana' ] #指定索引删除 fruit.pop(0) #符合元素删除,具体数值 fruit.r ...
- AirSim 自动驾驶仿真 (2-3) python控制无人机 win10
1首先搭建好环境 参考 2 python控制 https://blog.csdn.net/Zhaoxi_Li/article/details/108002544 官方代码位置 自己pythonj教程 ...
- 标记一下CF教育场的网址
(因为太难翻了,做到哪里标到哪,自用 Educational Codeforces Round 1 Educational Codeforces Round 2 Educational Codefor ...
- 方法(Java)
什么是方法? 基本介绍 在其他语言中也叫函数 System.out.println();类名.对象.方法: Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序集合 方法包 ...
- BinarySearch,逆序排列的数组的二分查找(折半查找),C++非递归+递归实现
1 // To Compile and Run: g++ binary_search.cc -std=c++11 -Wall -O3 && ./a.out 8 2 3 4 #inclu ...
- 使用idea从零编写SpringCloud项目-Hystrix
ps:Hystrix和Fegin里面使用的Hystrix,有些许区别.我理解的是Fegin.Hystrix主要是用于消费方在调用服务方接口时的异常处理,返回兜底数据等,而Hystrix则是消费方自己本 ...
- Spring Boot统一日志框架
一.日志框架的选择 市面上常见的日志框架有很多,它们可以被分为两类:日志门面(日志抽象层)和日志实现,如下表. 日志分类 描述 举例 日志门面(日志抽象层) 为 Java 日志访问提供一套标准和规范 ...
- openvas漏洞扫描:使用openvas时扫描漏洞时,报告中显示的数据与数据库数据不同
使用openvas设备进行漏洞扫描时,报告中的漏洞数量与readis数据库中查找到的漏洞数量不同 原因是,openvas的代码中默认在报告中显示的最小质量检测为70%.如图: 上图详细链接为:http ...