安装Ubuntu
- 不好意思,自行百度.- 反正最好分个 180G,然后内存起码 4G
配置环境 下载源码
- 一般默认 python 版本是 2.x的,所以3.x是会报错
- Android6的话 ,直接安装openjdk7
- 其他的话,查看下下面的编译环境配置和编译要求。
- 先终端输入 java -version
- 有的话,它会告诉你是哪个版本
- 没有的话,它会提示你安装指令,照抄呗
- sudo apt-get install openjdk-7-jdk
- 配置一下 JAVA_HOME
- echo $JAVA_HOME
- 没有输出的话 - 设置呗
- echo export JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/">> ~/.bashrc
- 重启一下终端设置
- source ~/.bashrc
- 输入$JAVA_HOME 看下是不是有输出
- 先终端输入 java -version
- git
- sudo apt-get install git
- git config --global user.name "Github的名字"
- git config --global user.email "Github的Email"
-
首先下载 repo 工具
mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo 如果上述 URL 不可访问,可以用下面的: curl -sSL 'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo chmod a+x ~/bin/repo
-
然后建立一个工作目录(名字任意)
mkdir WORKING_DIRECTORY cd WORKING_DIRECTORY
-
初始化仓库
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest 如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的: REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'
-
如果需要某个特定的 Android 版本 (Android 版本列表):
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-4.0.1_r1(比如4.0)
-
同步源码树(以后只需执行这条命令来同步):
repo sync
-
看 初始化同步方法2
- 注意,因为是要编译指定的源码,所以记得加上Android版本分支
- Android版本分支
-
版本分支很重要,别忘了!!!
- 实在不行,你就把源码目录写成分支名字,因为你要根据这个 分支名字 获取 细分版本号
- 根据 细分版本号 才能下载到对应的驱动文件
1529397036(1).jpg
-
啥?不想,那当我没说过!
-
这时候,聪明可爱的你肯定已经在开始同步了。
-
下载驱动!!! 没有这个你是没法开机的,会一直在 Google 这个logo无法开机。
-
找到你 对应的手机机型,根据上面的 细分版本号 下载驱动 - 两个或者三个,都下载下来。
1529397122(1).jpg
编译
-
这时候你已经下载完了把,把刚刚下载的驱动解压到源码目录下。
-
会是多个.sh文件 像这样:
- extract-lge-hammerhead.sh
- extract-broadcom-hammerhead.sh
- extract-qcom-hammerhead.sh
-
源码目录下执行 .sh 文件。
-
像这样 ./extract-lge-hammerhead.sh
- 然后就出现一堆英文,不要管它。直接 按Enter一路向下,直到你看到第8条,然后注意 继续Enter,最后会有一个什么什么的,需要你输入 I ACCEPT,一定要全部大写,不然再执行一边呗。
-
三个都要这样操作 - 这时候,源码路径下就会有一个 vendor 的文件夹- 然后开始编译了 ,假设你环境配置正确。没配置正确?那就慢慢编译呗,再挨个看报错修改东西呗。
-
- 这里会告诉你哪个Android版本需要哪个jdk版本 - 在Ubuntu 14.04 64位的基础上,编译4.4和6.0实际上只是一个使用jdk6一个使用openjdk7的区别。起码在我自己编译的时候是这样子
- 还有就是如果开始编译6.0 使用的 apt-get install openjdk7,后面你又打算编译4.4。那么在你安装jdk1.6.0_xxx.bin的时候,记得apt-get remove openjdk-7-jre 什么的,有三个反正不知道啥你就 tab 键,否则 jdk-version 一直是1.7,就算你修改了 /erc/profile 还是 ~/.bashrc 官方说是Android7-8使用openjdk8,5-6使用openjdk7,2.3-4.4使用jdk6 - 编译前配置
- 在 .bashrc文件中添加:export USE_CCACHE = 1 - echo export USE_CCACE=1 >> ~/.bashrc
- 为了提高编译效率,设置编译器高速缓存。
- 执行以下命令:
- prebuilts/misc/linux-x86/ccache/ccache -M 30G
- 这个 30G 根据自己的硬盘空间大小继续调整
-
开始编译
-
源码路径下
-
source . build/envsetup.sh
-
lunch
- 比如我是Nexus5,所以选择 19
-
aosp_hammerhead_userdebug
image
image
-
user 用于正式产品
-
userdebug 和user类似,但是有root权限,并且可以调试,主要用于调试
-
eng 开发用的选项,配有额外的调试工具。
-
如果编译后只在模拟器上运行,则lunch后可以就直接输入:1
-
最后,make -j4 或者 make -j8 或者 make -j16,看你配置了。
-
我是两三个小时直接编译成功,看配置和人品吧,啊哈哈哈哈。
-
刷机
- sudo adb reboot bootloader
- 这个时候可能adb devices 你会发现找不到设备
- 如果是虚拟机的话,点开上面那个 虚拟机 选项,可移动设备
- 然后 连接
- 可以执行下解锁命令
- fastboot oem unlock
- fastboot -w flashall
- 然后就会自动重启,开机。
刷机失败
-
失败? image
网友评论