重新编译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:: ...
随机推荐
- 证书profile 申请
ios 云打包 证书 和密码 在之前的笔记当中已申请好 证书profile 文件申请 登录苹果开放平台 申请前要添加身份,设备,设备那需要填写udid 方法链接https://www.jian ...
- 20200925--矩阵加法(奥赛一本通P93 6 多维数组)
输入两个n行m列的矩阵A和B,输出它们的和A+B 输入: 第1行包含两个整数n和m(1<=n<=100,1<=m<=100),表示矩阵的行数和列数. 接下来n行,每行m个整数, ...
- php curl 模拟post提交
/** * PHP发送Json对象数据 * @param $url 请求url * @param $jsonStr 发送的json字符串 * @return array */public functi ...
- 修改浏览器搜索引擎:设置网址格式(用“%s”代替搜索字词)
浏览器搜索引擎设置,如何填写网址格式(用"%s"代替搜索字词)? 以下收集部分: 综合检索 名称 关键字 网址(用"%s"代替搜索字词) 必应 cn.bing. ...
- Java8中Stream的用法
Java8中Stream的用法 1.概述 Stream APl ( java.util.stream)把真正的函数式编程风格引入到Java中.这是目前为止对Java类库最好的补充,因为Stream A ...
- 使用React脚手架初始化项目
1.npx create-react-app my-app------>是项目名 2.cd my-app 3.npm start
- iview的表格 render
view的表格 render 先看一下效果图 效果题 代码如下 render render:(h,params)=>{} //h指dom对象,params指当前每一行数据(param ...
- PHP如何在两个大文件中找出相同的记录?
1.引言 给定a,b两个文件, 分别有x,y行数据, 其中(x, y均大于10亿), 机器内存限制100M,该如何找出其中相同的记录? 2.思路 处理该问题的困难主要是无法将这海量数据一次性读进内存中 ...
- JAVA 学习打卡 day3
2022-04-25 22:53:16 1.运算符 表达式是由操作数与运算符所组成Java中的语句有很多种形式,表达式就是其中一种形式.表达式是由操作数与运算符所组成,操作数可以是常量.变量也可以是方 ...
- 划分数据集时出现PermissionError: [Errno 13] Permission denied:
PermissionError: [Errno 13] Permission denied: [errno 13]权限被拒绝 错误的原因可能是文件找不到,或者被占用,或者无权限访问,或者打开的不是文件 ...