Android 11源码下载和编译
目录Android 11源码下载和编译一、源码下载Android 11源码下载和编译最近摸了快好久的鱼了,感觉人都快废了。刚好这两天固态降价了,买了个sn550当移动硬盘跑Android 11源码,毕竟8.1的还是太老了,现在手机厂商都是基于Android 11或是升级到Android11的。一、源码下载下载方式非常简单,我先提供下我使用的命令:#下载repomkdir ~/binPATH=~/b
Android 11源码下载和编译
最近摸了快好久的鱼了,感觉人都快废了。刚好这两天固态降价了,买了个sn550当移动硬盘跑Android 11源码,毕竟8.1的还是太老了,现在手机厂商都是基于Android 11或是升级到Android11的。用的环境还是Ubuntu18.04,环境配置请看上篇文章:从零开始学习Android Framework.
一、源码下载
下载方式非常简单,下面是我使用的命令:
#下载repo
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
#创建并初始化android-11.0.0_r3仓库目录
mkdir android-11.0.0_r3
cd android-11.0.0_r3
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-11.0.0_r3 --repo-url=https://gerrit-googlesource.lug.ustc.edu.cn/git-repo
#同步代码
repo sync -c --no-tags
我使用的是清华的源,提几个要注意的点,避免大家踩同样的坑:
-
使用他们提供的repo,不要用自己apt-get下载的,不然会报如下错误,这个错让我蒙逼了好久
-
记得加上**–repo-url=https://gerrit-googlesource.lug.ustc.edu.cn/git-repo**,否则就会报如下错误,
fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle fatal: error [Errno 110] Connection timed out
不过使用清华的源,repo-url应该用https://mirrors.tuna.tsinghua.edu.cn/git/git-repo,但是这样也没报错,能正常使用
原因: repo 每次执行的时候都会去检查更新自己,但是网站被墙了.
报错截图如下:
下面就是正常初始化仓库的截图:
后面就是漫长的同步过程了。同步时空间不足,报错no space,我一想我特地怕空间不够买了个1t固态,把整个虚拟机移动到固态里了,还把之前分配的250G改成了500G,咋还空间不足呢,df -h查看果然总空间只有250G,占用100%,我以为是不是新分配的空间要重启才会生效,直接重启虚拟机结果尬在了开机阶段,百度了下解决方法:Ubuntu无法进入图形化界面(报错/dev/sda1:clean的解决).
能够进入桌面了,但空间还是不足,百度了下怎么给sda1扩容:虚拟机里ubuntu扩容主分区/dev/sda1.
我用gparted打开只有个/dev/sda1分区,把他扩容到500G,其他的分区没管。重新启动后df -h产看果然有500G了,继续同步代码。
然后又报错了,不过按照提示加上-j1 --fail-fast参数,出错时快速停止。因为同步代码时出错基本都是由于网络原因导致,所以出错了马上再repo sync就行了,我这里repo sync一下就好了。
当然如果上述内容无法解决你的问题,您可以访问国内源对应的网址,自己研究下,按照他们提供的方法下载源码即可:
- 清华大学 AOSP 镜像: https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/.
- 中国科技大学 AOSP 镜像: https://mirrors.ustc.edu.cn/help/aosp.html.
二、源码编译
编译还是和android 8一样,使用命令如下:
# 初始化编译环境( .可以用source代替,如 source build/envsetup.sh )
. build/envsetup.sh
# 执行
lunch
# 我这里使用模拟器所以选择 31 (即aosp_x86_64-eng)
Which would you like? [aosp_arm-eng] 31
# 开始编译(这里怕我电脑扛不住用的-j1,电脑好的可加大力度)
make -j1
这里lunch选择的时候我看别人推荐的都是
lunch sdk_phone_x86_64
我只知道lunch的选择不同使编译时make的模块会稍有不同,目前我lunch 31没啥问题所以就不改了
Google官网的AVD使用https://source.android.google.cn/setup/create/avd
结果:编译成功,编了17个半小时,j1太慢了下次试试j2。截图如下
打开虚拟机执行下面命令成功运行模拟器:
. build/envsetup.sh
lunch 31
emulator
截图如下:
这里只出过一个问题,就是out of memory,无论我是直接make还是make -j2都会报错,没办法只能把虚拟机内存调到12G,然后用make -j1编译.
哎,希望以后我这小笔记本还带的动Android源码。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)