unity代码加密for Android,mono编译

千磨万击还坚劲,任尔东西南北风。这篇文章主要讲述unity代码加密for Android,mono编译相关的知识,希望能为你提供帮助。
uinty3d加密推荐几篇比较好的博客链接:http://www.cppcourse.com/u3d-encryption.html
http://www.xuanyusong.com/archives/3553
http://m.blog.csdn.net/blog/yy405145590/41205283
http://blog.sina.com.cn/s/blog_799860f90102vp0l.html
 
《一》加密原理 1、unity3d是基于mono的,而mono是开源的,我们重编mono,并加入加密和解密的算法,生成so文件,替换unity工程中的so。 《二》NDK安装1.下载unity对应版本的mono源代码,官方地址:https://github.com/Unity-Technologies/mono/,
 

unity代码加密for Android,mono编译

文章图片

unity代码加密for Android,mono编译

文章图片

2.重编mono,因为作者用的win7系统,开始是用cygwin,结果各种失败,所以就装了虚拟机VMware  Workstation,然后你需要下载一个Linux的系统ISO镜像文件,笔者当时下载的是ubuntu-14,大小大概在1G左右,然后就是把镜像文件安装到虚拟机上咯~~安装后大概的样子是这样的
unity代码加密for Android,mono编译

文章图片

3.进入Ubuntu系统,我在Home目录里面新建了一个目录monobuild,打开Terminal命令行模式,
$ mkdir monobuild

然后把下载的mono源代码zip文件放到这个目录里面(只能从windows上拖到这个目录就可以了),这个时候输入
$ ls
就能看到有monobuild这个目录了
4.解压mono,进入monobuild目录
$ cd monobuild

执行解压命令
$ unzip mono-unity-4.6.zip

5.下载NDK安装包,这个时候你要看看/mono-unity-4.6/external/buildscripts/build_runtime_android.sh文件第13行左右看看unity用的NDK版本
 
然后到官网下载对应版本的NDK,安装
6.安装好后,ndk配置,输入
$ gedit ~/.bashrc

在打开的文件的末尾添加
export NDK_HOME=/home/anyq/monobuild/android-ndk-r9 export PATH=$PATH:$NDK_HOME

其中NDK_HOME等号后面是的是ndk的路径,可以用pwd命令输出当前的路径查看
输入
$ source ~/.bashrc

使其立即生效.
7.ndk验证,输入
$ nkd-build

如果没有提示 commond not found就是成功了。
《三》SDK安装(可以不安装)1.官网下载AndroidSDK,需要FQ,呵呵。。也放到monobuild目录。
2.这个时候需要解压,比我笔者下载的是  android-sdk_r24.3.3-linux.tgz ,输入
tar -zxvf android-sdk_r23.0.2-linux.tgz
3.和ndk一样在bashrc末尾加入
export ANDROID_HOME="/home/anyq/android-sdk-linux"export PATH="$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools"

  《四》编译1.拷贝  mono-unity-4.6/external/buildscript/build_runtime_android.sh  到    mono-unity-4.6/    根目录中。
2.切换到mono-unity-4.6/ 目录中,使用 root 运行 build_runtime_android.sh 
./build_runtime_android.sh

3.会提示没有安装Git
sudo apt-get install git

【unity代码加密for Android,mono编译】4.修改 build_runtime_android.sh Line 113 ,改为:
(cd "$KRAIT_PATCH_PATH" & & perl ./build.pl)

5.然后修改 mono-unity-4.6/external/android_krait_signal_handler/build.pl 
(这是脚本调用git clone过来的 https://github.com/Unity-Technologies/krait-signal-handler/)
删掉第一行 
#!/usr/bin/env perl -w

6.继续运行出错,提示  ANDROID_NDK 版本不对,又要下载,下载又失败,修改成我们自己的版本。
找到build.pl ,修改BuildAndroid 函数里面的 r9 为 自己下载的版本  r10e 
7.修改android-ndk-r10e目录下的RELEASE.TXT
改为 :r10e 
8.external/android_krait_signal_handler/jni/Application.mk   文件
TOOLCHAIN_VERSION := clang3.3改成 TOOLCHAIN_VERSION :=4.8

9.
然后继续编译
提示没有 autoreconf
使用下面命令安装autoreconf:
sudo apt-get update sudo apt-get install autoconf

同样的方法,顺便把下面的包都安装一下
* autoconf * automake * bison * gcc * gettext * glib > = 2.0 * libtool * make * perl

10.如果运气好就能编译成功了
 
unity代码加密for Android,mono编译

文章图片

可以看到 打包成功,lib在builds/embedruntions/android.

 
 

    推荐阅读