android自助终端界面源码_MacBook下载和编译Android AOSP源码

一、安装

0.国内镜像

首先,推荐两个地方,也就是国内镜像来下载源码,强烈建议你看完,因为都一样的 科大源、清华源 注意事项:如果你不编译源代码,装源代码的磁盘格式,是任何格式都可以,但是你如果要在MacBook上编译源代码,那必须把磁盘格式变成Mac的日志格式,区分大小写的,也就是这个格式:

97d2f39d60144d2aa67a8eb23ce83ca7

1.安装repo和Git

Git的话,就自行搜索怎么安装了,这里介绍怎样安装repo。

mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

运行 repo help可能会报错,或者有提示没有获得完整版 问题1.提示没有获得完整版

41fb302cd7f84905a6c9f97fd3f8a856

问题2.提示没有这个命令

f897f0d00f7a48af94168a76ee45958d

解决第一个问题: 所以,要下载两个文件 第一个就是clone.bundle https://gerrit.googlesource.com/git-repo/clone.bundle 第二个就是git-repo https://gerrit.googlesource.com/git-repo 将clone.bundle复制到git-repo文件夹中 然后把git-repo这个文件夹中的所有文件都复制到上面创建的~/bin/目录下 然后执行下面的代码(其实这个已经解决了第二个问题,每次更换操作目录的时候,要得到repo的命令,都要执行这两个方法)

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc  export PATH=$PATH:$HOME/bin 

再执行:repo init 得到这个界面

b1d04b955f6240ae9a0fd38c0a80ee83

然后查看repo的版本,执行:repo version

8d0c7388893e4a46949c3960e45df6d1

到这里,repo就已经完整地安装完毕了。

2.下载源码

然后就是开始下载源代码了 然后创建一个存放源代码的目录

mkdir AndroidSourcecd AndroidSource

然后呢老规矩,还是要每次用repo之前都要执行(这个暂时还没办法解决)

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc  export PATH=$PATH:$HOME/bin 

然后执行

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

用来初始化代码目录。 得到这个界面

d7e77d71c8f145cdb4570534cfab9ae7

成功了就是这样。到这里,已经得到AOSP源码的主分支,然后你想下载其他分支,就是其它版本的代码,你可以切换到其它版本。

cd .repo/manifestsgit branch -a | cut -d / -f 3 

这样就可以得到所有的版本,我这里选择了,android-10.0.0_r33这个版本,回到AOSP目录下,执行代码 repo init -b android-10.0.0_r33这样就切换到这个分支了,下载的也是Android10.0的代码,你也可以不切换,默认下载主分支,最新的代码,但我不建议这样做,因为后续可能会发生一些不可知的错误。 当然,在上一步初始化代码的时候,你已经知道你要下载哪个分支了,就可以直接以下代码:

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-10.0.0_r33
91fc259924a3467a961538779859d8c7

然后开始同步代码:

repo sync

然后就开始同步代码,看到网速了吧,已经在开始同步了,看网速,我这里下载了五六个小时,网速还是不给力的。

9b619935b8d6404cb97f73a5d5c2608e

二、编译

1.机器

MacBook Pro

53c792d249ac43fb92786afb83fd27e7

2.JDK环境

查看JDK的安装位置 /usr/libexec/java_home

92e67256f0064981a10f96036e42e9ae

在~/.bash_profile文件中配置JDK环境, vim ~/.bash_profile 打开,加入你的JDK地址,配置JDK

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Homeexport JAVA_HOME=$JAVA_HOME
a552b7cc9e444f0d99a6ebcf32403438

source ~/.bash_profile 使得文件生效 echo $JAVA_HOME 输出JDK配置,看看是否生效 整个过程

d50522cba7ac47babe2f4d8a0af175a8

3.GCC环境

下载一个在终端下载一个gcc,就是命令:brew install gcc 或者下载软件Xcode就可以了。如果你没有brew命令,那就靠你自己解决搜索安装brew卡,这也是一个坑。

4.可提前解决的报错

报错1

61534e9cec56427c82b77c0ff7b8aac3

这个是因为我的分区不是Mac OS拓展(区分大小写)的分区,所以就报错了,因为的只有一块移动硬盘,又是exFat格式的,压缩卷不行,然后我格式化了移动硬盘,重新下载了一份代码,够刺激吧。

报错2

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

这个问题一直困扰着我,但是不知道怎么稀里糊涂地解决了,你可以尝试着执行以下代码: 就是增加java的堆内存,使得不会内存溢出

export JACK_SERVER_VM_ARGUMENTS=”-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m”

报错3

50592cf7aebb4e09919c03e552303451

这里官方都有提示可以这样修改:

9e1499713e9d410297aed452e97fc673

就是修改目录下这个文件system/sepolicy/tests/Android.bp,去掉stl: "libc++_static"

报错4:

633b8db366ae40e5a15f4aff01f9ffdb

这是因为没有对应版本的SDK,查看Mac版本,我这里是没有10.15 在这个文件里build/soong/cc/config/x86_darwin_host.go ,添加你对应的版本

14628ff8f98a47a8aaea5972eb412a2d

报错4

Permission denied 权限问题,把整个源码都获得权限就可以了chmod -R 777 AOSP

报错5

也不管啥报错了,要先安装port,然后再安装以下的内容:

sudo port install gmake git gnupgsudo port install bison

5.编译

一切操作都在你的根目录下面执行 切换到Android源码的目录下,执行这个文件envsetup.sh source /Volumes/lanjiabin/AndroidSource/build/envsetup.sh 或者切换到build目录下,直接source envsetup.sh

执行lunch 会让选择启动器,我选了24 ,输入24,回车,就是这个效果 也可以直接:lunch 24

ae713c9e9788410aa32b8fe12f1f1db7

然后开始编译代码make -j4 其中-j后面的表示开始4个线程进行进行编译. 根据你的CPU数量来算,我就两个,乘以2就可以了,所以我的是4 经过漫长的等待,和多次错误,我终于编译成功了,我这破电脑用了11个小时,太恐怖了,我看别人就一个小时就完事,我这差点崩溃

53a9436a791344ac88c2ba199b02699e

然后再执行

.envsetup.shlunch 24emulator

再等一会,就可以看到自己的虚拟机在启动了

02c2fa625caa439692b4602948434b9a

好的,先告一段落。

编程中我们会遇到多少挫折?表放弃,沙漠尽头必是绿洲。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值