设为首页 收藏本站
查看: 2153|回复: 0

[经验分享] Mac OS 10.6(Snow Leopard)编译Android源代码

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-29 12:43:43 | 显示全部楼层 |阅读模式
  最近在看Android内核剖析(柯元丹著),准备把Android源代码研究一下。做net开发时,就是通过microsoft symbol server取得net framework的源代码加载到debugger调试程序的,这种方式对于框架的学习是最方便不过的。很多时候,我也养成了习惯了随手打开源文件而不是API文档的习惯。Android源代码需要在*nix系统下编译,正好手头有个macbook,于是打算在Mac OS下编译。本文参考了android官网以及部分网友的blog,文中如引用均给已出相应连接。
  一.配置环境
  笔记本:Macbook MC207CH/A  2.26GHz Intel Core 2 Duo
  内存:2GB 1067MHz DDR3
  OS : Snow Leopard 10.6
  XCode :  4.0 with ios sdk 4.2 (有问题,后面有解决方案)
  JDK : 1.6  
  Eclipse :  Indigo (Java EE)
  二.设置Mac OS 编译环境
  参照官网Setting up a Mac OS X build environment,不再赘述。
  1.特别强调Android源代码必须在大小写敏感的文件系统下编译,而Mac OS默认不是大小写敏感的,因此需要创建一个大小写敏感的磁盘镜像文件。
  具体方法进入应用程序/实用工具/磁盘工具,选择文件->新建->新建空白映像:
DSC0000.png
  2. 使用make 3.81 (revert from make3.82)
  强调在mkdir /Users/Shared/dports后需要使用cd /Users/Shared/dports切换到该文件夹下执行svn co,这里我刚开始没有注意无法安装gmake 3.81
  三. 下载Android源代码
  参照官网Downloading the Source Tree
  1. 特别强调在Initializing a Repo client 一节,应该把当前目录设置为前文创建的大小写敏感的文件系统下,比如我把新创建的dmg挂载到/Users/basilwang/android,那么需要执行$cd /Users/basilwang/android  源代码才能放到新创建的这个路径下
  我刚开始没有注意,直接执行了
  $ repo init -u https://android.googlesource.com/platform/manifest
    结果把源代码下载到其他路径下,白白浪费我2个多小时的时间,而后我把下载的文件扔到了回收站了,结果出了一个错误,害的我又花了一些时间排除这个错误(后面详述)
  2. 这里推荐使用Android内核剖析(柯元丹著)一书提供的一段防止下载异常的脚本
  #!/bin/bash   
   #FileName get-android.sh     
   PATH=./bin:$PATH     
   repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.3_r1.1     
   repo sync     
   while [ $? = 1 ]; do     
   echo "================sync failed, re-sync again ====="     
   sleep 3     
   repo sync     
   done
  这里下载的是2.3.3 gingerbread版本
  四. 编译Android源代码(Gingerbread)
  Gingerbread的编译还依赖于MacOSX10.5.sdk,但本机是10.6,于是下载Xcode 3.25,安装的时候选择另外的路径比如Developer325,安装完毕后Xcode4和Xcode325共存
  另外修改两个地方
  1 external/qemu/Makefile.android,其中第72行,LEOPARD_SDK:= /Developer/SDKs/MacOSX10.5.sdk,将其修改为:   
LEOPARD_SDK:= /Developer325/SDKs/MacOSX10.5.sdk
  2 build/core/combo/HOST_darwin-x86.mk,其中第29行,
  sdk_105_root := /Developer/SDKs/MacOSX10.5.sdk 改为
  sdk_105_root := /Developer325/SDKs/MacOSX10.5.sdk
  现在可以开始编译源代码
  $make,需要很长时间,我大概用了2个多小时才编译完成
  此处报了两个错误,耽误了我很长时间
  1 执行make后
  find: `frameworks/base/frameworks/base/docs/html': No such file or   
directory     
find: `out/target/common/docs/gen': No such file or directory     
find: `frameworks/base/frameworks/base/docs/html': No such file or     
directory     
find: `out/target/common/docs/gen': No such file or directory     
find: `frameworks/base/frameworks/base/docs/html': No such file or     
directory     
find: `out/target/common/docs/gen': No such file or directory     
find: `frameworks/base/frameworks/base/docs/html': No such file or     
directory     
find: `out/target/common/docs/gen': No such file or directory     
find: `frameworks/base/frameworks/base/docs/html': No such file or     
directory     
find: `out/target/common/docs/gen': No such file or directory
DSC0001.png
  Jean-Baptiste Queru在Error building Gingerbread?回答
  Oh, that error reported by "find" is actually a known harmless issue.      
We should add it to the documentation.
  2
  .Trashes/501/bionic/libc: MODULE.TARGET.STATIC_LIBRARIES.libc_common already defined by bionic/libc.  Stop.
  开始我一直在检查为什么会重复定义(already defined),make clean也不管用,最后发现原来编译时找到了回收站.Trashes我删除过的文件,郁闷,清空回收站就ok.
  五.将源代码导入Eclipse
  1. 新建Java Project将路径指向Gingerbread目录, 此处为~/android
  2. 拷贝.classpath
  $sudo cp ~/android/development/ide/eclipse/.classpath   ~/android/.classpath
  $chmod +w  ~/android/.classpath    将.classpath设置为可写
  3. build 出现如下错误
DSC0002.png
  整理报错信息,集中在com.android.common包中
  com.android.common.ArrayListCursor;
  com.android.common.speech.LoggingEvents;
  com.android.common.Rfc822InputFilter;
  com.android.common.Rfc822Validator;
  com.android.common.Search;
  com.android.common.userhappiness.UserHappinessSignals
  在Java Build Path界面下
DSC0003.png
  移除出错jar包,并且选择Add JARs 增加out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates/javalib.jar
     
  至此编译成功。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-157970-1-1.html 上篇帖子: Mac OS 环境下 安装 Asp.Net及使用Yeoman 创建Asp.Net 项目 下篇帖子: ios开发第一步--虚拟机安装MAC OS X
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表