最近一直在尝试下载安卓源码,但是,生在CN,要去Google下载源码,那是一件痛苦的事情,所以,以下下载源码的方法,请各位哥们自己找个可以使用的VPN,或者其他“番习习qiang”的方法。
首先,下载源码需要有git,repo环境,不懂的哥们,自个百度吧。相信度娘。一般Linux下很容易找到这两个。windows下可以使用Cygwin,这个工具,大家也可以百度。
=====================我是可爱的分割线======================================
现在进入正题,源码在哪里下载呢?
Google的源码网址:https://android.googlesource.com/platform/manifest/+refs
这个网址里面有很多的连接,里面有很多的android源码版本。至于要选择那个版本,自己决定吧。
这里我看中了
这个连接。
好了,接下来下载地址是什么呢。
首先说说没有Gmail的同学们
由于没有Gmail。所以只能匿名下载,匿名下载的的话,对同一IP做了连接限制,相对来说会慢点,相对而已。
那么下载代码的方法就是:repo init -u https://android.googlesource.com/platform/manifest -b android-5.0.0_r7.0.1
然后说说有Gmail的同学
竟然有Gmail,那就不用担心连接限制了。
1、去https://android.googlesource.com/new-password,并用gmail帐号登录。
2、登陆后就是授权之类的,有英语底子的人都能看懂。
3、之后看到一个框框,上面有提示,就是把框框放在一个脚本,然后运行,不懂脚本是什么的孩子们,百度一下linux的sh脚本是个啥吧。
4、之后运行脚本后,可以惊喜发现,在你电脑的个人Home目录下,生成了.gitcookies,以及在.gitconfig里面配置了cookies连接在.gitcookies了。
5、然后下载方法就是:repo init -u https://android.googlesource.com/a/platform/manifest -b android-5.0.0_r7.0.1
6、和上面的地址区别就是简单的多了一个 /a
这个仅仅是repo init。正在痛苦的值后面要执行的。
之后把下面的脚本封装一下,然后运行。
repo sync -j16
while [ $? = 1 ]; do
echo “======sync failed, re-sync again======”
sleep 3
repo sync -j16
done
第一句的意识是,用16个线程来同步下载代码,为了快一点,如果你电脑够牛,你可以改成32个之类的。
之后的代码就是为了防止中断而让它继续同步而已。
这个同步过程大概就。。。。。。无数个夜。。。反正我同步了48小时。vpn不给力啊。
============================我是可爱的分割线=========================================
同步完之后,就是代码的编译和运行了。
首先,编译需要一大堆杂七杂八的环境,具体百度 android源码编译环境都有一大堆教程了。
我这里只是想说,android5.0需要的java环境是1.7版本,经过我试验,openjdk和jdk都可以,没关系。1.8版本不可以哦。
还有如果是mac ox编译的话,需要xcode里面
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
这个文件,哥们可以去xcode5版本找。xcode6是木有的。
在终端执行java -version判断确实是1.7版本了
之后执行
. build/envsetup.sh
lunch
回车默认即可。我也不知道lunch里面各个版本的区别,看英文可以了解大概,但是具体就不清楚了。大伙们可以百度一下。
然后make -j8编译。
编译时间不一,8是指八个线程。电脑够牛的人可以用16。一般以电脑核数的两倍为宜。
之后如果有报错的话,可以看代码去解决。一般都没啥问题。一般。如果有问题,大伙们可以给我留言,我看到一定会回复,但是没看到就不一定有人回复啦,因为没看到嘛~~~~~~~~~
编译结束后,就会看到
#### make completed successfully (01:10:48 (hh:mm:ss)) ####
表示你编译用了多久,成功了。
之后执行
emulator
就可以看到你可爱的虚拟机跑起来了。
大伙们就不要叫我上传到百度云啥的,在下网速,不行,上传才几个KB/S,32G的代码,上传会死人的。