赞
踩
首先 需要一个台式电脑,有个i7处理器,有一个1T的机械+ 500G的固态,如果条件允许改一个服务器也可以。我这里是一个台式电脑。
在台式电脑上安装一个虚拟机,基本是使用的VMware ,应该这个虚拟机有一个好处就是把每次成功的结果做成一个快照,就相当于做了一个备份,可以回退。
安装好虚拟机你就可以在创建虚拟机, 编译android 源码我用的Ubuntu 18.4 ,在虚拟机中安装即可。不会的自行百度,我这里不做赘述。
安装完系统 再启动虚拟机,这个时候需要 aosp 系统镜像
AOSP | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
我下载的不是最新的,最新的现在要 95G,很浪费磁盘空间。
Index of /aosp-monthly/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 在这个链接中可以看到
本人下载的是 这个版本,这个版本刚好有 Android 9,相对小了很多
下载完成之后 执行文件MD5 完整性校验,看看是不是 文件有损害,
md5sum aosp-20190401.tar
再通过命令来解压
tar xf aosp-20190401.tar
解压完成之后就 配置编译的环境
编译android 8.0以上的源码需要 配置 jdk8
##安装openjdk
-
- sudo apt-get update
-
- sudo apt-get install openjdk-8-jdk
-
- sudo apt-get install openjdk-8-jre
##安装编译依赖的库文件
首先需要更新软件源,这里使用阿里源
- 编辑如下文件:
-
- sudo apt update vim #先安装vim
-
- sudo apt install vim -y
-
- sudo vim /etc/apt/sources.list #或者sudo gedit /etc/apt/sources.list
-
- 末尾添加如下内容
- deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
- deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
- deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
- deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
- deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
- deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
- deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
- deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
- deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
- deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
- deb http://kr.archive.ubuntu.com/ubuntu/ xenial main universe
- deb-src http://kr.archive.ubuntu.com/ubuntu/ xenial main universe
上述软件源添加完成以后,需要先做更新操作:
sudo apt-get update
- sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
- sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
- sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
- sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
- sudo apt-get install git-core gnupg flex bison gperf build-essential
- sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
- sudo apt-get install libc6-dev-i386
- sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
- sudo apt-get install lib32z-dev ccache
- sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
安装并配置git
- sudo apt-get install git -y
-
- git config --global user.name "your name"
-
- git config --global user.email "your@example.com"
在根目录
- sudo gedit ~/.bashrc
-
- PATH=~/bin:$PATH
-
- export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
保存以后退出
安装repo
sudo apt install repo -y
同步源码
- cd aosp
-
- repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-8.0.0_r2
-
- repo sync
这里就等待 大概1小时 ,如果同步不成功 就在 执行 repo sync ,多次执行除非同步成功。
同步成功如下
https://developers.google.com/android/drivers#sailfishopm4.171019.021.p1
下载这两个 压缩文件 并解压得到两个脚本 ,拷贝到 aosp 目录下 运行,
- ./extract-google_devices-sailfish.sh
-
- ./extract-qcom-sailfish.sh
输入 I ACCEPT
另一个同样的方法,这样子脚本就安装完成。
##编译AOSP
- source build/envsetup.sh
-
- lunch
我自己用的pixel 手机,所以选择的 23
设备编码选择 https://source.android.com/setup/build/running#selecting-device-build
最后一步就是 在主目录找到 .bashrc 文件,在最后面添加 export LC_ALL=C
- echo "export LC_ALL=C" >> ~/.bashrc
-
- source ~/.bashrc
链接文件
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
然后就是编译
- make -j16
-
-
- 如果用python3编译失败,那就切换用python2来编译
- 打开 prebuilts/sdk/tools/jack-admin
-
- 对JACK_SERVER_COMMAND增加-Xmx4096m选项
-
- 用如下命令
- sudo vim /jack-admin 或者sudo gedit /jack-admin
-
- 找
-
- JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8}"
-
- 修改为
-
- JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -Xmx8g}"
- export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx8g"
-
- 两种方式任选其一都可以,然后执行jack重启命令:
-
- out/host/linux-x86/bin/jack-admin kill-server
- out/host/linux-x86/bin/jack-admin start-server
可以写成脚本来刷机 ,刷机的时候 需要解锁 bootloader,谷歌官网先下载对应版本的 刷机包 ,解压之后
第一种刷机方法
用刷机命令 如下图:
第二种刷机方法
在所有.img 文件的文件夹里面,打开 cmd直接执行 如下命令,
fastboot flashall -w
就是将所有的.img 文件刷入手机。
刷机完成
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。