安卓aosp,kernel 编译,刷入一条龙

安卓源码+设备驱动

测试环境
Distributor ID: Ubuntu
Description: Ubuntu 18.04.4 LTS
Release: 18.04
Codename: bionic
目标设备: nexus7
目标系统: 4.4.4_r1

使用的网址
https://source.android.google.cn/setup/start/build-numbers?hl=zh-cn
代号、标记、细分版本号
安卓aosp,kernel 编译,刷入一条龙_第1张图片
https://developers.google.com/android/drivers
设备驱动下载
使用方法:
解压到aosp根目录,
依次运行所有sh文件,有的设备有三四个,还有的设备有六七个之多,按q退出协议阅读并输出I ACCEPT同意协议,然后自动释放驱动到aosp/vendor

避免权限错误

chown 777 -R .

SSR代理

export http_proxy=http://172.16.8.98:1080
export http_proxy=https://172.16.8.98:1080
# 测试
curl www.google.com

jni_generator.py错误

# 修复指向javap的绝对路径
sudo gedit external/chromium_org/base/android/jni_generator/jni_generator.py

根据ANDROID_PRODUCT_OUT刷入

# 直接刷入
fastboot flashall -w
# 制作成ZIP线刷刷入
fastboot flash -w update /home/chensiji/Aosp/444r1/out/target/product/grouper/nakasi-ktu84p/grouper.zip 


内核篇

代码准备

git clone https://android.googlesource.com/kernel/tegra

# 如何知道已经刷号系统的设备的内核版本
# 方法一:查看手机关于设备的信息

# 其实我们在下载aosp源码的时候,内核就已经下载并编译好了,所以可以抽取内核文件的编译信息,我这的位置是 device/asus/grouper/kernel
# 方法二:
dd if=kernel bs=1 skip=$(LC_ALL=C grep -a -b -o $'\x1f\x8b\x08\x00\x00\x00\x00\x00' kernel | cut -d ':' -f 1) | zgrep -a 'Linux version'

# 方法三(Nexus5专用):
dd if=zImage-dtb bs=1 skip=$(LC_ALL=C od -Ad -x -w2 zImage-dtb | grep 8b1f | cut -d ' ' -f1 | head -1) | zgrep -a 'Linux version'

git checkout -b android-tegra3-grouper-3.1-kitkat-mr1 origin/android-tegra3-grouper-3.1-kitkat-mr1

确定编译架构

export ARCH=arm

其实,如果你有ndk环境,或aosp源码,都能找到ndk交叉编译工具
不必特别下载,我这一步的操作是

# 注意最后那个“-”别忘了补上,这个是拼接工具链所必须的
export CROSS_COMPILE=/home/chensiji/Aosp/444r1/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-

kernel/tegra/arch/arm/configs/
安卓aosp,kernel 编译,刷入一条龙_第2张图片
确认配置文件

make tegra3_android_defconfig

最后,执行如下命令进行编译

make clean
make -j16

替换boot.img中的内核文件
mv your-aosp-out/boot.img flash-my-zImage/boot_img/boot.img
mv your-kernel-out/zImage flash-my-zImage/zImage/zImage.img

./make.sh
# 刷入替换内核文件后的boot.img
fastboot flash boot flash-my-zImage/target/boot.img

你可能感兴趣的:(安卓)