Android框架源代码下载与调试技巧

    由于对Android底层框架源代码比较感兴趣,所以想自己下载底层代码然后进行Debug,主要参照http://source.android.com/source/building.html进行整理。

    相关环境:Windows8,  VMware Workstation9.0.2,  Ubuntu 12.04.3,

    注意:如果是在虚拟机上跑ubuntu,至少需要16GB ram/swap和至少30GB的disk才能完成以下以及后续操作。对于Android2.3.x以上的版本,需要64-bit的环境。Python2.6-2.7,GNU make 3.81-3.82,JDK6,Git 1.7或者更新,不推荐用虚拟机装ubuntu,后面repo init的时候会出现问题,最好直接安装ubuntu。

    Python和GNU make都已经包含在Ubuntu12.04.3中了。

    首先安装JDK:

$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

    然后安装Git:

$ sudo apt-get install git-core
然后设置USB Access,具体作用我也不太清楚,先按照说明设置:
创建文件 /etc/udev/rules.d/51-android.rules 文件内容如下,记得把 <username>替换为能通过USB访问手机的认证用户名,我猜测这里可能是为了连接手机进行调试所进行的设置
# adb protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>"
# fastboot protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>"
# adb protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>"
# fastboot protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>"
# adb protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>"
# fastboot protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>"
# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>"
# fastboot protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>"
# adb protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>"
# fastboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>"
# usbboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="<username>"
# usbboot protocol on panda (PandaBoard ES)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>"
# adb protocol on grouper/tilapia (Nexus 7)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0600", OWNER="<username>"
# fastboot protocol on grouper/tilapia (Nexus 7)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0600", OWNER="<username>"
# adb protocol on manta (Nexus 10)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0600", OWNER="<username>"
# fastboot protocol on manta (Nexus 10)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0600", OWNER="<username>"
官网有ccache的设置,我没这个需求,就没有设置。然后安装repo:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
这里要注意,我的机器上出现了network unreachable的错误,解决办法是:打开/etc/hosts
添加红色部分
127.0.0.1 localhost
127.0.1.1     ubuntu
74.125.237.1   dl-ssl.google.com
然后可以新建一个自己的工作目录并打开:
$ mkdir AndroidSourceCode
$ cd AndroidSourceCode
紧接着,以下命令中的android-4.0.1_r1可以换为你所需要的版本,具体名称参见http://source.android.com/source/build-numbers.html,以下是一部分的版本名称:

 
JRO03Dandroid-4.1.1_r1.1Nexus 7
JRO03Eandroid-4.1.1_r2Nexus S
JRO03Handroid-4.1.1_r3 
JRO03Landroid-4.1.1_r4Nexus S
JRO03Oandroid-4.1.1_r5Galaxy Nexus
JRO03Randroid-4.1.1_r6Nexus S 4G
JRO03Sandroid-4.1.1_r6.1Nexus 7
JZO54Kandroid-4.1.2_r1Nexus S, Galaxy Nexus, Nexus 7
JZO54Landroid-4.1.2_r2
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
最后,下载代码:
$ repo sync
这个过程比较漫长,请耐心等待,关于怎么在eclipse中利用Android源代码进行编译和调试,下一篇文章里将会提到。这里会遇到一个很大的问题:repo sync会卡住,在这个链接里http://stackoverflow.com/questions/2091474/repo-sync-problem有解决方案,将虚拟机里的ubuntu内存设置得更大一些,最关键的是将VMWare Workstation的Network Adapter设置为桥接方式上网。但是由于网络环境的限制,我的机器不能设置桥接,读者可以尝试一下桥接方式上网,这里有一篇文章关于怎么设置VMware为桥接上网,http://blog.youkuaiyun.com/gavin_dinggengjia/article/details/6325904 。还有一个解决方法是输入以下命令,可以尝试不一定百分百成功:
$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
最后给大家推荐一个Android官网上可以下载的Eclipse,集成了ADT与Android SDK,用起来很方便,http://developer.android.com/sdk/index.html。以及源列表:http://wiki.ubuntu.org.cn/%E6%BA%90%E5%88%97%E8%A1%A8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值