• 【Unity】安卓加密编译libmono.so失败记录(做个记录呗)


    失败总结:

            失败原因基本是我不会git的克隆,仅仅因为这个unity-mono库存在submodule(子库)导致卡进度,如果能成功完整克隆unity-mono库,按道理是挺简单就能完成编译libmono.so文件了。(谁能的话可以告诉我,这git它一个个去克隆子库可以,执行了autogen.sh时它又会去克隆一遍全部,这时候就会出现无法正常克隆情况,和我使用git submodule update的效果基本一致,卡死在cloning into xxx 或 fail connect github.com 或各种奇怪的bug 均是克隆submodule问题,可能有人说你手动自己一个个克隆完整不就行了吗?我试了但它这autogen.sh就是会有代码可能是内部的主动去调起了重新克隆子库的代码(目前不想找了 要改起来头皮发麻)。
            观察发现,仅有后来出现的Unity版本是存在子库的,Unity4.x或5.x 甚至Unity2017好像都没有submodule(子库)所以试手推荐选用没有submodule库的,网上基本上都是4.x或5.x都有成果,后面再试试4.x或5.x,测试下编译出来的libmono.so能不能给高版本的unity使用。

            总之,真的是绝了~ 

            目前还剩下一种方案就是直接使用镜像路径替换github.com(改gitconfig可以做到),就是不知道能不能克隆子库的时候也会生效了,目前进展是能够正常克隆子库了,但是速度是2KB/s龟速,而且我没有那种加速的小东西,等后续有条件可以尝试弄下。

    本人环境介绍:
    unity-mono分支:2019.4-branch-updates
    ubuntu64位:ubuntu-18.04.1-desktop-amd64.iso
    vmware:VMware® Workstation 15 Pro (15.5.0 build-14665864)
    ndk: android-ndk-r16b (下载)

    git clone --recursive -b 2019.4-branch-updates https://github.com/Unity-Technologies/mono.git

    unity mono编译_hongjie98的博客-CSDN博客_使用unity 的mono编译器

    window虚拟机:VMware Workstation (下载)
    linux环境:Ubuntu 18.04.4 LTS (网易镜像下载)
    Mono版本:mono-unity-2019.4-mbe(下载) 
    ndk版本:android-ndk-r16b-linux-x86_64(下载)

    编译:
    1、卸载旧版本mono编译环境

    1. sudo apt-get --purge remove mono-runtime
    2. sudo apt-get autoremove

    2、安装新版本mono编译环境 (国内镜像安装)    

    1. sudo apt install gnupg ca-certificates
    2. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
    3. echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
    4. sudo apt update
    5. sudo apt install mono-devel -y

    这里我卡了很久,原因是镜像没有使用。镜像文章:https://blog.csdn.net/Piconjo/article/details/104660915 

     用root权限打开这个sources.list文件添加如下镜像(网易)之后执行【如果这些镜像不行了你得找到一个可以加速的,注意不能全部都放进去,只能选一个】

    sudo apt clean
    sudo apt update

    1. deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
    2. deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
    3. deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
    4. deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
    5. deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
    6. deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse
    7. deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse
    8. deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse
    9. deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
    10. deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse

     完成后再去执行上方的代码,基本就是sudo apt install mono-devel -y 这行命令下载的东西比较多(我发现还是慢,但不至于完全卡死,也有个100~300KB左右的速度,总之慢慢等吧 几个小时?)

     3、安装必要的工具

    sudo apt-get install autoconf automake libtool libtool-bin git cmake python

    4、cd到mono根目录(mono-unity-2019.4-mbe解压出来的所在目录)

    1. sudo ./autogen.sh
    2. sudo ./make

    可能会遇到报错信息:
    configure.ac:434: error: installing './compile'; error while making link: Operation not supported
    configure.ac:16: error: installing './missing'; error while making link: Operation not supported
    ikvm-native/Makefile.am: error: installing './depcomp'; error while making link: Operation not supported
    **Error**: automake failed.
     
    需要将mono工程移出共享文件夹,比如放到根目录/lib下,Move To完成后再执行上方命令。


    失败!失败!又TM的失败了! 

    无论是windows还是ubuntu系统,执行到关键的./autogen.sh代码时,均会进行一次git克隆子库,也就是.gitmodules文件的内容,大概有十几个子库,而且子库内部也有子库,这些克隆子库的地方在windows系统是fail connect github.com(改镜像路径好像也是一样的),ubuntu系统就是另一个报错(但不是所有都无法clone只有部分会)就是fatal: The remote end hung up unexpectedly我从网上了解到的方法统统都不行,后面搞了那些后还报错了一个新的libtoolize:   error: copying '/usr/share/libtool/build-aux/ltmain.sh' to './' failed
    总之基本上可以告别安卓加密了,网上的所有安卓加密目前均已尝试,后面有心情再玩玩了,感觉用途不大li2cpp打包就是一层加密了。


    如果上面的你都成功了,没有任何报错,那恭喜继续下面的步骤 这些都是网上的 按道理是目前我能搜到比较高级版本的,很多编译libmono.so都是unity5.x版本的东西,太老了。 

        5、到mono/external/buildscripts目录下
            1)修改build.pl 中 my $existingMonoRootPath='/usr/lib/mono'
            2)将ndk解压到下面的路径:artifacts/Stevedore/android-ndk-linux-x86_64/android-ndk-r16b
            3)检查extrnal目录下的bgwgc、boringssl、roslyn-binaries是否是空的,如果是就到主干上单独下载,然后放到对应的目录内
            4)./build_runtime_android.sh
            
        6、编译出来的 libmonobdwgc-2.0.so 是debug版本 (PS:我是把编译处理的android文件夹拷贝到桌面 /home/admin/Desktop )
            1) 处理armv7 release版 cd 到ndk目录
                artifacts/Stevedore/android-ndk-linux-x86_64/android-ndk-r16b/arm-linux-androideabi-clang/bin
                ./arm-linux-androideabi-strip /home/admin/Desktop/android/armv7a/libmonobdwgc-2.0.so
                
            2) 1) 处理x86 release版 cd 到ndk目录
                artifacts/Stevedore/android-ndk-linux-x86_64/android-ndk-r16b/i686-linux-androideabi-clang/bin
                ./i686-linux-androideabi-strip /home/admin/Desktop/android/x86/libmonobdwgc-2.0.so

  • 相关阅读:
    车辆租赁管理系统
    助力项目快捷实现国际化,造个多语言轮子
    软件测试/测试开发丨接口自动化测试,接口鉴权的多种方式
    QT调用OpenCV绘制直线、矩形、椭圆、圆、不规则曲线、文本
    ADB 命令结合 monkey 的简单使用,超详细
    【应用程序启动过程-三种加载控制器的方式-上午内容复习 Objective-C语言】
    RK3568 + YT 9215交换机芯片,MAC TO MAC 调试记录
    Twikoo最新私有化部署教程--迁移腾讯云
    sklearn 笔记 TSNE
    【工具流】WSL2安装
  • 原文地址:https://blog.csdn.net/qq_39574690/article/details/126207003