重新编译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:: ...
随机推荐
- Go语言中密码加密校验
使用go自带的库bcrypt bcrypt是不可逆的加密算法,无法通过解密密文得到明文. bcrypt和其他对称或非对称加密方式不同的是,不是直接解密得到明文,也不是二次加密比较密文,而是把明文和存储 ...
- 机器学习实战—搭建BP神经网络实现手写数字识别
看了几天的BP神经网络,总算是对它有一点点的理解了.今天就用python搭建了一个模型来实现手写数字的识别. 一.BP神经网络简介 BP(back propagation)神经网络是一种按照误差逆向传 ...
- homework2软件方法论
什么是软件工程方法论? 1.软件工程是一个方法论,就是我们在开始一个项目时,大体框架一定要有这么一个概念,而具体实施时,必须根据公司一些特点,优化项目开发的流程,这样才是有实效而方法论只是软件工程的结 ...
- vue中自动将px转换成rem
1.首先下载 lib-flexible npm install lib-flexible --save 2.在main.js中引用 lib-flexible 3.安装px2rem-loader(将px ...
- python-sqlite数据库锁定
sqlite3.OperationalError: database is locked 因为sqlite只支持单线程操作,如果此时打开数据库就会出现这个问题
- 如何服务好B端客户
核心价值: 2B公司的核心价值在于服务.如何服务好客户,需要的是了解客户,与客户共赢. 一.客户信任度的建立 服务:不是口头说说,是要落地与实践. 对于客户的承诺至关重要,承诺的时间点.承诺的事情要保 ...
- 正确理解RestFul 接口
一.REST# REST,即Representational State Transfer的缩写,翻译过来就是"表现层状态转化".不得不承认,我在刚开始看到这个名词的时候是一脸懵逼 ...
- RKO队——冲刺随笔(4)
这个作业属于哪个课程 至诚软工实践F班 这个作业要求在哪里 第五次团队作业:项目冲刺 这个作业的目标 记录冲刺计划.要求包括当天会议照片.会议内容以及项目燃尽图(项目进度) 1.昨日进展 对小程序的的 ...
- k8s介绍和学习思路
1. Kubernetes介绍 Kubernetes是一个完备的分布式系统支撑平台.具备完备的集群管理能力,包括多层次的安全防护和准入机制.多租户应用支撑能力.透明的服务注册和服务发现机制.内建的智能 ...
- Nginx自带的变量
$args #请求中的参数值$query_string #同 $args$arg_NAME #GET请求中NAME的值$is_args #如果请求中有参数,值为"?",否则为空字符 ...