最近摸了快好久的鱼了,感觉人都快废了。刚好这两天固态降价了,买了个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
我使用的是清华的源,提几个要注意的点,避免大家踩同样的坑:
使用他们提供的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 每次执行的时候都会去检查更新自己,但是网站被墙了.
报错截图如下:
下面就是正常初始化仓库的截图:
后面就是漫长的同步过程了。
同步时空间不足,在make时报错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一下就好了
当然如果上述内容无法解决你的问题,您可以访问国内源对应的网址,自己研究下,按照他们提供的方法下载源码即可:
编译还是和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
结果:编译成功,编了17个半小时,j1太慢了下次试试j2。截图如下
打开虚拟机执行下面命令成功运行模拟器:
. build/envsetup.sh lunch 31 emulator
截图如下:
这里只出过一个问题,就是out of memory,无论我是直接make还是make -j2都会报错,没办法只能把虚拟机内存调到12G,然后用make -j1编译.
哎,希望以后我这小笔记本还带的动Android源码。