android模块源码编译错误,MAC OS X 10.10编译android5.0源码 步骤 以及 遇到的问题

编译前准备:

先安装port:macports下载地址命令行执行:sudo port install pnupg git libsdl bison make  (注意:通常 不需要装make 和bison 因为后面会装xcode )装xcode:最好APPSTORE下载,最近有个什么后门事件。xcode装好后:装命令行工具:  命令行运行:xcode-select –install(注意:install前面 2个杠)装jdk1.7 jdk1.6 这2个都要装(后面有说明)  jdk 1.7在oracle官网可下载,1.6在苹果官网 有下载(具体需要自行百度)  把jdk 1.7作为 首选jdk 也就是加入环境变量的时候 放在前面 而1.6放在后面为android 分出一个 大小写敏感的分区 镜像 因为 android源码编译必须要大小写敏感的文件系统  ~/下执行 hdiutil create -type SPARSE -fs ‘Case-sensitive Journaled HFS+’ -size 60g ~/android.dmg.sparsefile  建议:分区60G以上 最好100G 否则编译到中途 满了就蛋疼了  hdiutil attach ~/android.dmg.sparsefile -mountpoint /Volumes/android  挂载分区 这样在/Volumes/android下就是我们的源码分区了在~/.bash_profile中添加以下内容:  #set the number of open files to be 1024  ulimit -S -n 1024

下载源码:

由于国内访问不了google的网站 所以下载源码通过清华镜像站来下载 包括repo

先下载源码仓库管理工具repo:  repo是一个python脚本文件,用来下载管理源码,实质是git  在~/bin下执行  git clone git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/  并且把 repo加入环境变量 以便我们使用  直接修改~/目录下的.bashrc文件 加入环境变量  然后执行chmod a+x ~/bin/repo 以提供运行权限  修改repo文件:mvim(或其他编辑器) ~/bin/repo 里的REPO_URL改为:  REPO_URL = ‘git://aosp.tuna.tsinghua.edu.cn/android/git-repo’ 也就是 把google换成 清华镜像站为什么不直接下载压缩好的源码:  有了repo 可以方便的同步源码 更新源码 切换各版本源码 并且可以随时下载某个 模块的源码 源码由众多的工程组成下载好repo后 就可以开始下载源码了 :同样使用清华镜像站来下载,速度好 ,链接稳定

在我们刚刚建立的大小写敏感分区也就是:/Volumes/android/下执行:mkdir android-source然后执行:  repo init -u  git://aosp.tuna.tsinghua.edu.cn/android/platform/mainfest -b android-5.0.1_r1 (-b选项指定分支)  注意分支r1 这个r几 和 要烧写到真机nexus 的 型号有关 如果要烧写则要注意很快就可以init成功 然后就可以执行repo sync 同步源码到本地了

编译源码

下载完成后,就可以开始编译了,我大概下载了20个小时,中间断过一次,我编译的是android-5.0.1_r1的源码

源码根目录执行 source build/envsetup.sh 将编译源码所需要的命令 设置好源码根目录执行 lunch aosp_arm-eng 该句表示:编译的版本为带全套debug工具的 版本 其他更多选项参见google官网在源码根目录 执行make即可 开始编译  关于make -4j 多核处理器 可以加快编译速度 但 这么做 可能会引起内存撑到最大 导致编译 失败 建议make 慢慢编译  我编译 花了大约6小时

用模拟器运行编译好的源码

1.注意:模拟器运行源码 实质是加载内核 加载system.img 加载userdata.img 加载ramdisk.img 来运行的  内核文件在/Volumes/android/android-source/prebuilts/qemu-kernel/arm 下  其他三个文件在:  /Volumes/android/android-source/out/target/product/generic目录下

2.官网的步骤只有一个 任意目录执行emulator 如果发现 emulator command not found 就需要先执行:  source build/envsetup.sh  lunch sdk-eng  这样就可以执行运行emulator运行源码了

调试源码

要想自己写程序 在源码里 或修改源码文件 来运行 ,需要用到mmm命令.该命令用于编译某个模块 这样就不需要全编译了 编译好模块后执行 make snod就会重新打包 成镜像文件 注意:mmm command not found 需要先执行source build/envsetup.sh注意:需要编译的模块必须有Android.mk编译脚本文件 具体写法自行google 百度

遇到的问题

问题一 :can’t found xcode sdk 10.6  xcode sdk 版本问题。编译android5.0.1的编译脚本里有些使用10.6 10.7 10.8来编译 但我们装的都是新的xcode已经是10.9 10.10了  所以 我们修改编译脚本build/core/combo/mac_version.mk 将里面的 10.6 10.7 10.8改成 10.9 10.10  具体需要根据自己的sdk版本来 查看sdk版本:  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs问题二:treat warnings as errors  make编译脚本里 有-Werror选项 会导致这个问题 这时 我们需要修改编译脚本 去掉-Werror选项  看是哪个模块报的错,例如:system/core/adb/get_my_path_darwin.c报错 那么可以定位为adb模块 修改system/core/adb/Android.mk文件 将里面的-Werror全都去掉问题三:”stdarg.h” could not found file  include   造成该问题的原因是 xcode sdk 10.9已经没有这个文件了 有2个办法:

方法一:修改build/core/combo/HOST_darwin_x86.mk将:  ifeq ($(mac_sdk_version),10.8)里的10.8 换成10.9 该方法可能没有用 方法二:既然没有 我可以给它增加 让它有。实际上android源码里就有这些头文件:  源码根目录直接执行sudo cp -Rf prebuilts/misc/darwin-x86/analyzer/lib/clang/3.3/include/* /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include  这样就把 头文件复制过去了问题四:”string” could not found file  include   该问题和问题三同理 只不过该头文件位于:  external/libcxx/include 这里 同样 复制所有头文件到xcode sdk目录问题五:com.sun.javadoc class not found  执行有些类 要导入javadoc包 会引起这个错误  解决该问题就需要安装jdk1.6了 也就是必须要1.7 1.6都由才能编译成功问题六:空间不够了 我的mac才128G ,只分配了50g 给android源码,这个时候把android挪走 重新分区 是不可能的了 因为 外面的空间只有18G了  那么可以考虑把.repo文件夹删掉 这个文件夹有18G的空间占用,删掉不影响编译 但就不能方便源码管理了, 实在没有办法 只有出此下策。问题七:在下载源码的时候repo sync如果断掉了,直接重新执行repo sync 就能继续 续传下载了  但有时候 可能会发生 还是下载不了 报fetch errors 那么可以执行repo sync –force-broken 来跳过下载不了的project 继续下载其他project  最后下载 完成的时候 这个broken project 没下载好的话 重新执行repo sync即可  如果还是无法下载:那么进入.repo 目录 把该project删掉 再执行repo sync 就可以继续下载了

最后:

一定要坚持,不要放弃,遇到任何问题都是能解决的,最后编译成功 真是无比巨大的喜悦,我从下载到编译 总共花了4天 。除了吃饭睡觉,就再搞这个。  为什么要编译Android5.0源码?  因为方便学习源码,而5.0源码可以导入android studio 无疑是最方便学习源码的方式 代码跳转 代码风格 都十分好 。关于导入请自行google 百度

本人参考的blog:mac os x10.10编译android 4.4.4源码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值