一. 环境准备
安装 cmake 以及 python2.7, 以及下载 ndk-r16b,并配置环境变量 NDK_ROOT 指向 ndk 路径。
如果是 Windows 系统还需要安装 cygwin,并务必要安装其中的 make, gcc gdb。 然后把 cygwin 的 bin 目录配置到环境变量中的 PATH 中
1. 安装cmake
推荐直接使用 Android Studio 里的 SDK Manager 进行下载 cmake 安装,安装后配置环境变量即可
2. 安装python2.7
https://www.python.org/downloads/release/python-2716/下载后双击安装包进行安装
2.1 选择是否将Python.exe添加到系统Path环境变量
(也可以安装完成后手动在环境变量添加/删除Python.exe 路径)
2.2 安装后验证通过应该是这样:
3. 安装 cygwin
https://cygwin.com/install.html
3.1 下载后点击setup-x86_64.exe安装,出现安装画面。直接点“下一步”,出现安装模式的对话框,如下图所示:
我们看到有三种安装模式:
- Install from Internet,这种模式直接从Internet安装,适合网速较快的情况;
- Download Without Installing,这种模式只从网上下载Cygwin的组件包,但不安装;
- Install from Local Directory,这种模式与上面第二种模式对应,当你的Cygwin组件包已经下载到本地,则可以使用此模式从本地安装Cygwin。
在这一步,需要注意,为了获得最快的下载速度,我们首先在列表中寻找Cygwin中国镜像的地址:http://www.cygwin.cn, 如果找到就选中这个地址;如果找不到这个地址,就选一个国内的镜像地址,推荐使用清华镜像 https://mirrors.tuna.tsinghua.edu.cn/cygwin/ (不推荐阿里云镜像 http://mirrors.aliyun.com/cygwin/, 实测下载内容速度极慢) 选择完成后,点击“下一步”,
这一步,我们选择需要下载安装的组件包,为了使我们安装的Cygwin能够编译xlog,需要安装
make
gcc
gdb
3.2 安装后验证
运行cygwin,在弹出的命令行窗口输入:
cygcheck -c cygwin
会打印出当前cygwin的版本和运行状态,如果status是ok的话,则cygwin运行正常。
然后依次输入gcc –version,g++ –version,make –version,gdb –version进行测试,如果都打印出版本信息和一些描述信息,非常高兴的告诉你,你的cygwin安装完成了!
3.2.1 在windows命令下使用cygwin
要想在Windows命令提示符下使用Cygwin,你需要添加Cygwin到Windows环境变量。
打开命令提示符来测试软件测试几个Linux命令。
正如下面的图片里所看到的,pwd和ls在Windows命令提示符工作正常
cygwin_win10.png
ndk-r16b
https://developer.android.com/ndk/downloads/older_releases.html?hl=zh-cn
解压android-ndk-r16b-windows-x86_64.zip
设置NDK_ROOT环境变量,在系统变量中增加。值如:”D:\android-ndk-r16b“;
把”%NDK_ROOT%“加入到系统变量Path中,记得分号隔开。
配置成功:
环境配置小结
到此环境准备成功了,接下来准备编译试试
编译xlog
所有的编译脚本都在mars/mars 目录, 运行编译脚本之前也必须cd到此目录,在当前目录下运行,默认是编译 armeabi 的,如果需要其他 CPU 架构,把编译脚本中的archs = set([‘armeabi’])稍作修改即可。
archs = set([‘armeabi’,’armeabi-v7a’,’x86’,’arm64-v8a’,’x86_64’])
开始编译
python build_android.py
执行命令后,会让选择:
Enter menu:
1. Clean && build mars.
2. Build incrementally mars.
3. Clean && build xlog.
4. Exit
如需要自定义日志加密算法或者长短连协议加解包,请选择static libs选项,即 2 和 3。选项 1 和 2 输出结果全部在 mars_android_sdk 目录中,3 和 4 输出结果全部在 mars_xlog_sdk 目录中。
结果: