Android AOSP源码下载编译

pixel 3XL 源码下载 编译 刷机

参考博客:
Android 9.0 -源码下载编译
Android 9源码下载+编译+Pixel 2XL刷机
Android系统源码编译及刷机实战

[Android原声机刷机包镜像下载地址]:
https://developers.google.cn/android/images

1. 镜像地址:

下载repo
curl -k https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo

修改REPO_URL:
REPO_URL = ‘https://gerrit-googlesource.lug.ustc.edu.cn/git-repo’

初始化仓库:
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-8.0.0_r1(对应分支版本,参考“#2具体下载机型参考”)

2. 具体下载机型参考:

Android 的最新分支情况,如果看不全, 可以将语言切换成英文。
具体原因不清楚。

https://source.android.google.cn/setup/start/build-numbers

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

3. 驱动下载地址(刷真机需要下载对应的驱动):

https://developers.google.cn/android/drivers

- 驱动下载和使用方式(pixel 3XL为例):

  • 下载驱动文件
    在这里插入图片描述
  • 找到对应一套代码的驱动(使用详细版本"PQ3A.190605.003"来查找需要的驱动),下载得到两个压缩文件, 解压。
    在这里插入图片描述
  • 将解压后的文件拷贝到源码工程根目录
  • 然后依次运行这两个shell脚本。
  • 会提示你查看证书,按Enter键一行行的查看,出现下面的输入提示时,
    输入 I ACCEPT,解压到了vendor 目录下。另外的自解压脚本也是这样执行

驱动配置OK!!!

4. 编译:

- 编译准备工作文档

https://source.android.google.cn/setup/build/building

- 对应产品的运行版本选择(lunch 产品先择)

https://source.android.google.cn/setup/build/running

我的是pixel 3XL, 所以选择的是:aosp_crosshatch-userdebug
在这里插入图片描述
以上, 编译完成后就可以通过fastboot命令进行刷机了。

5. Android R编译问题

- 关闭ODex优化:

diff --git a/crosshatch/BoardConfig.mk b/crosshatch/BoardConfig.mk
index b105aa9..92e8a94 100644
--- a/crosshatch/BoardConfig.mk
+++ b/crosshatch/BoardConfig.mk
@@ -14,6 +14,10 @@
 # limitations under the License.
 #
 
+WITH_DEXPREOPT := false
+DEX_PREOPT_DEFAULT := nostripping
+WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY := true
+
 TARGET_BOOTLOADER_BOARD_NAME := crosshatch
 TARGET_SCREEN_DENSITY := 560
 TARGET_RECOVERY_UI_MARGIN_HEIGHT := 165

- 编译

  1. 编译kernel
    make showcommands -j8 bootimage
  2. 编译Android:
    m -j8

- 修改swap交换区大小

1.首先用命令free查看系统内 Swap 分区大小

###@ubuntu:~$ free -h
                      total        used        free      shared  buff/cache   available
Mem:           7.8G        4.0G        756M        2.0M        3.0G        3.4G
Swap:          800M        578M        200M

可以看到 Swap 只有 800M


增加Swap分区
1.创建一个 Swap 文件
  找一个空间足够的目录用来存放swap文件
  mkdir /swap
  cd /swap

root@ubuntu:/swap# dd if=/dev/zero of=swapfile bs=1024 count=8000000
8000000+0 records in
8000000+0 records out
8192000000 bytes (8.2 GB, 7.6 GiB) copied, 39.0723 s, 210 MB/s

把生成的文件转换成 Swap 文件

root@ubuntu:/swap# mkswap -f swapfile
Setting up swapspace version 1, size = 7.6 GiB (8191995904 bytes)
no label, UUID=40ad094d-4be3-4d31-8148-00c636d524d7


2.激活 Swap 文件
  sudo swapon swapfile
  再次查看 free -h 的结果。

tjj@ubuntu:~$ free -h
                   total        used        free      shared  buff/cache   available
Mem:           7.8G        4.0G        756M        2.0M        3.0G        3.4G
Swap:          4.8G        578M        4.2G

OK!


如果需要卸载这个 swap 文件,可以进入建立的 swap 文件目录。执行下列命令。
  sudo swapoff swapfile
  如果需要一直保持这个 swap ,可以把它写入 /etc/fstab 文件。
  /swap/swapfile /swap swap defaults 0 0


6. 下载和编译Android内核源码

摘抄自:Android源码和内核下载编译流程

1.下载内核代码

下面是官方下载地址以及git库的版本区别,国内下载还得使用清华源进行下载

git clone http://android.googlesource.com/kernel/common.git # 通用的Linux内核,后面6套都是以该源码为基础;
git clone http://android.googlesource.com/kernel/exynos.git # 用于使用三星Exynos芯片的Android设备,典型代表是Nexus 10;
git clone http://android.googlesource.com/kernel/goldfish.git # 用于Android模拟器的内核源码;
git clone http://android.googlesource.com/kernel/msm.git # 用于使用高通MSM芯片的Android设备,典型代表是ADP1(G1)、ADP2(G2)、Nexus One和Nexus  4;
git clone http://android.googlesource.com/kernel/omap.git # 用于使用德州仪器(TI)OMAP芯片Android设备,典型代表是PandaBoard和Galaxy Nexus;
git clone http://android.googlesource.com/kernel/samsung.git # 用于使用三星Hummingbird芯片的Android设备,典型代表是Nexus S;
git clone http://android.googlesource.com/kernel/tegra.git # 用于使用NVIDIA (Tefra)芯片Android设备,典型代表是Xoom和Nexus 7。

HTC手机可以在以下地址下载指定设备的Linux内核源码:
http://www.htcdev.com/devcenter/downloads

注:内核代码下载我们也使用 清华源 http://mirrors.ustc.edu.cn/aosp/kernel/ ,这里需要注意此网站下载速度较慢,因此使用下面命令较快,git库可根据需求进行替换,我下载了模拟器内核

git clone https://aosp.tuna.tsinghua.edu.cn/android/kernel/goldfish.git
cd goldfish
git branch -a
git checkout remotes/origin/android-goldfish-2.6.29

2.编译内核代码

1. 配置交叉编译工具

sudo vim /etc/profile # 打开环境变量配置文件,配置交叉编译工具
export PATH=$PATH:~/bin/AOSP/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin

2. 配置makefile文件

cd goldfish
vim Makefile # 打开makefile文件找到并配置如下两个参数
    ARCH      ?=arm
    CROSS_COMPILE  ?=/home/user/bin/AOSP/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/
arm-linux-androidkernel-

3. 开始编译

make goldfish_defconfig # 生成配置文件
make # 编译命令

4. 运行当前内核版本的模拟器

emulator -kernel ./kernel/goldfish/arch/arm/boot/zImage

3. 查看内核版本

adb shell
cd proc
cat version

内核编译过程中如果出现Out of memory error错误,配置jdk内存重新编译即可

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值