转载请注明出处:http://blog.csdn.net/yianemail/article/details/51577665
Q1:编译源码带来什么好处?
显而易见,获取隐藏api,编译 Android 源码会让你对 Android 整体框架有更具体的宏观概念。
Q2:源码的概念是什么?
“源码” 概念意义上指的是google发布的基于linux内核的一套解决方案。
针对ARM平台的做的各种适合嵌入式设备的一套代码。

包括现在很多Android手机厂商,其实都是对源码做修改。从而定制自己的Android设备。

源码编译过程 (我是基于OS X 10.10.3)

一:
1,创建大小写敏感的磁盘镜像

hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/Android.dmg.sparsefile

硬盘本地目录下(~/)创建一个40G的sparsefile image,名字叫做Android,此虚拟硬盘支持大小写。
2,把分区挂载到.bash_profile(bash_profile文件主要是系统开机启动的配置)。

open .bash_profile

把以下命令放在.bash_profile
# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg.sparsefile -mountpoint /Volumes/android; }

二: 需要安装的工具

(1) 安装Xcode (建议安装最新版,但是有ox 版本限制)
各个版本xcode
http://blog.sina.com.cn/s/blog_4caf02490102vr4s.html
(2)安装MacPort,macports from macports.org (需要修改.bash_profile 文件,加入以下命令)
export PATH=/opt/local/bin:$PATH
(3) 通过MacPort安装make,Git,GPG

执行sudo port install gmake libsdl git-core gnupg
然后输入你的密码
注:若出现
Error: git-core has been replaced by git; please install that instead.
Error: org.macports.configure for port git-core returned: obsolete port
Please see the log file for port git-core for details:
/opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_devel_git-core/git-core/main.log
To report a bug, follow the instructions in the guide:
http://guide.macports.org/#project.tickets
Error: Processing of port git-core failed

则表明你已安装过git (可以忽略此错误,继续往下执行)
(4) 修改文件描述符限制
修改.bash_profile
# set the number of open files to be 1024
ulimit -S -n 1024

三: 下载源码 (此处可参考google)
http://source.android.com/source/downloading.html
(1) 创建目录~/bin
mkdir ~/bin
(2) 修改 .bash_profile
export PATH=~/bin:$PATH

(3) 安装repo 关于repo ,并修改权限
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

(4) 创建Android 源码文件夹
mkdir android_source
cd android_source
(5) 执行repo init

git config --global user.name "(本机git用户名)"git config --global user.email "(本机git邮箱)"repo init -u https://android.googlesource.com/platform/manifest

最后你会得到一个 repo has been initialized in /Users/luhuanju/android_source的提示,说明初始化成功

(6)下载源码
repo init -u git://Android.git.linaro.org/platform/manifest.git -b + (源码tag)
关于源码tag
比如我的5.0版本:
repo init -u git://Android.git.linaro.org/platform/manifest.git -b android-5.0.2_r1
(7) repo同步,在android_source目录下执行repo sync下载代码
~/repo sync
(过程超级长~)

四 :编译源码
(1)初始化编译环境
. build/envsetup.sh
(2)选择编译目标包
执行 lunch

如果是只执行模拟器 选择1即可
注:若出现
Can not find SDK 10.6 at /Developer/SDKs/MacOSX10.6.sdk
Don’t have a product spec for: ‘aosp_arm’

则表明xCode sdk版本不对应
(/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs)查看当前系统的SDK版本是多少。比如我的SDK版本是MacOSX10.11.sdk,接下来编辑build/core/combo/mac_version.mk中的mac_sdk_versions_supported所在的行添加10.10就行了

(3)编译
make j4 (这个过程也是有点长~)

更多相关文章

  1. Android(安卓)ROM开发之预制GMS
  2. 使用Eclispe进行Android系统应用的开发和调试
  3. 开源框架和开源项目
  4. Android中TASK和PROCESS的区别,获取最近运行的程序和正在运行的进
  5. Android知识体系总结之Android部分之Toast篇
  6. Android(安卓)Zygote启动流程源码解析
  7. .net程序员转战android第一篇---环境部署
  8. Android(安卓)9.0 源码_机制篇 -- 全面解析 Handler 机制(原理篇)
  9. Small宝典(一)Android(安卓)Small框架源码解析

随机推荐

  1. android饼状图表
  2. Android(安卓)SDK Manager无法更新问题解
  3. Android__TextView跑马灯的实现
  4. Android 如何找到最匹配资源
  5. android Webview支持input type=file
  6. 之View state changes(视图状态改变)
  7. Android Support Library更新到v22.1之Ap
  8. Android 屏幕旋转后防止重新执行onCreate
  9. Activity或者FragmenitActivity锁屏后会
  10. android 中Java和javascript的交互