Mac编译android源码的坑
来源:互联网 发布:java 视频播放 编辑:程序博客网 时间:2024/06/05 18:20
Mac编译android源码
因为项目需要在代码线上编译app,想在mac上直接编译,省时省力。不过,配置环境过程中遇到不少坑,现在逐一记录下来。
主要有以下几点:
- android开发环境
- 创建大小写敏感的分区
- MacPorts
- Xcode
- proguard
- 其他坑
- android开发环境自不必说;
- mac本身对大小写不敏感,但android源码编译必须要对大小写敏感,所以必须要创建一块大小写敏感的分区,以供在上面进行编译;
- Xcode是个坑,版本不同会带来一些问题;
- MacPorts安装比较简单;
- proguard这个坑藏得比较深;
创建大小写敏感的分区
创建分区:
sudo hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 55g ~/android.dmg
55g是我自己分的大小,官方推荐至少40g,硬盘空间足够的尽量分得大一些;
加载分区:
sudo hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android
打开分区:
cd /Volumes/android/
MacPorts
两步搞定:
1.下载安装MacPorts;
2.通过MacPorts安装相应工具:
- POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
- 这一步可能比较耗时,耐心等待
源码下载
代码线是通过公司vpn用repo下载的
Xcode版本
我这里要编译的是android4.4,对应的是Xcode5,然而我的mac上是Xcode7;
经过我的各种尝试和google,得出结论:Xcode7不适合编译4.4,改来改去太麻烦,不如降级;
然后我就卸载Xcode7,下载并安装Xcode6,并源码中对以下文件作修改:
build/core/combo/HOST_darwin-x86.mk
mac_sdk_versions_supported := 10.9 10.10 ifeq ($(mac_sdk_version),10.9) Mac SDK 10.8 no longer has stdarg.h, etc host_toolchain_header := $(HOST_TOOLCHAIN_ROOT)/lib/gcc/i686-appledarwin$(gcc_darwin_version)/4.2.1/include HOST_GLOBAL_CFLAGS += -isystem $(host_toolchain_header) endif
其实就是修改相关mac_sdk_version,因为4.4是基于Xcode5的,相关mac_sdk_version是不同的;
总结:Xcode最好按需选择版本
开始编译
进入新分区cd /Volumes/android/
打开代码线cd CodeLineName/
开始编译source build/envsetup.shlunch(记得选对平台,不然出现各种问题就和我一样了)make/mmm/mm
proguard遇到的坑
其他项目都正常编译成功了,但是当我编译一个使用了okhttp3的项目的时候,出现以下错误:Error: Can't read [proguard.ClassPathEntry@121a9334] (Can't process class [okhttp3/Address.class] (Unsupported version number [51.0] for class format))
其实这就是proguard版本过旧的问题,需要替换源码目录下的proguard版本:/external/proguard我这里把4.4的替换为了5.21,可以暂时解决此问题。替换之后同样会导致其他问题,最好还是保持原有版本,需要的时候再替换。
其他坑
- 错误: 程序包com.sun.javadoc不存在;错误: 找不到符号
错误分析:jdk路径有问题
正确的(OSX下):
export PATH=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin:$PATH
错误的:
export PATH=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/:$PATH
区别就在于bin后面有没有“/”,“jdk1.7.0_79.jdk”换成你自己的版本
0 0
- Mac编译android源码的坑
- Mac编译android源码
- mac下编译android源码
- Mac 10.12 编译 Android 源码
- mac 下载编译Android源码
- android源码编译--Mac OS
- Android 源码的下载、编译以及eclipse调试【MAC】
- mac 上的android源码下载编译查看
- Mac 系统下Android 源码的下载与编译
- 在Mac下编译Android源码
- Mac OS X下编译Android源码
- Mac OS X 下编译android源码
- MAC OS 10.8编译android ics源码
- Mac下Android 4.4源码编译
- Mac OS X 10.9编译Android源码
- Mac OS X下编译Android源码
- MAC 下编译Android 6.0源码
- Mac下载并编译Android源码
- oracle几种简单及高级查询语法
- Android eclipse遇见res->values->styles xml报错
- 运算符、表达式和语句
- [eclipse]Syntax error on token ";",{ expected after this token
- IDE debugg功能解释
- Mac编译android源码的坑
- 几种数据库连接
- DNS 原理入门
- PHP简单模板实现实例
- angular.min.js:107 TypeError: Cannot read property 'gc' of undefined
- 一道找规律的题
- php获取全国最新省市区行政区划数据
- ubuntu16.04 chromium安装flash
- Android给文件改后缀名