千磨万击还坚劲,任尔东西南北风。这篇文章主要讲述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/,
文章图片
文章图片
2.重编mono,因为作者用的win7系统,开始是用cygwin,结果各种失败,所以就装了虚拟机VMware Workstation,然后你需要下载一个Linux的系统ISO镜像文件,笔者当时下载的是ubuntu-14,大小大概在1G左右,然后就是把镜像文件安装到虚拟机上咯~~安装后大概的样子是这样的
文章图片
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.如果运气好就能编译成功了
文章图片
可以看到 打包成功,lib在builds/embedruntions/android.
推荐阅读
- 使用LogPhoneUtil工具类在Android手机保存APP运行日志
- Android 悬浮窗各机型各系统适配大全
- ER图的最小化介绍和详细指南
- Perl的数组操作(push、pop、shift、unshift)
- PHP如何使用IntlChar charType()函数()
- PHP如何使用SplFixedArray count()函数(示例)
- Java中抽象类和接口之间有什么区别()
- 如何根据给定的遍历构造BST( |S1)
- 页面布局(CSS如何使用flex属性())