Android源码编译和刷机

目录

  • 1. Android源码编译
    • 备注
  • 2. Android源码刷机

1. Android源码编译

1. 下载对应设备版本的驱动。
https://source.android.com/setup/start/build-numbers
找到需要的android版本号和对应的设备驱动号(例:android-9.0.0_r46 PQ3A.190801.002)
 
https://developers.google.com/android/drivers#bullheadopr4.170623.006
通过设备驱动代号找到对应的Android版本驱动的链接(例如:extract-google_devices-blueline.sh和extract-qcom-blueline.sh两个文件)
 
2. 解压后将两个sh脚本copy到源码目录下,执行
(运行后会生成Vendor文件夹,驱动相关文件就放在里面)
如果编译过wheeljack3工程的话,会在源码目录下生成cases和app文件夹,再次编译前则需要删除cases和app文件夹。
 
3. 编译
初始化编译环境:
source build/envsetup.sh
 
lunch
选择相应的设备-(选择Android源码版本支持的设备对应的设备号-一般为鱼的名字)
我选择pixel3对应的设备别名/鱼名代号 ---- blueline -> aosp_blueline-userdebug
# 5.1.1_r3 lunchNum
           20 aosp_hammerhead-userdebug (汪磊物理机)
           15. aosp_hammerhead-userdebug(fix服务器上)
# 6.0.0_r1 lunchNum
           18 aosp_bullhead-userdebug (nexus 5X)(OK)
           19. aosp_hammerhead-userdebug(推荐)
# 7.0.0_r1 lunchNum
           8 aosp_fugu-userdebug
           19. aosp_bullhead-userdebug (Nexus 5X) (官网无驱动.sh文件,大概率源码自带驱动,如有机器可验证)
# 7.1.2_r8 lunchNum
           20 (nexus6P)(aosp_angler-userdebug)
           17 (pixel XL marlin)
# 8.0.0_r1 lunchNum
           19 (没有pixel C 的ryu,随便选的一个dragon)
# 8.0.0_r4 lunchNum
           24 (nexus6P angler)
# 8.0.0_r10 lunchNum
           25 aosp_bullhead-userdebug (nexus 5X) (上海编译服务器使用)
# 8.1.0_r1 lunchNum
           22 (pixel XL marlin)
# 9.0.0_r1 lunchnum
           42 (pixel XL marlin)
# 10.0.0_r1 lunchnum
           3 (pixel 3 blueline)
# 11.0.0_r1 lunchnum
           3 (pixel 3 blueline)
# 12.0.0_r1 lunchnum
           4 (pixel 3 blueline)
           28 (pixel 4 aosp_flame-userdebug) (武汉探优编译服务器使用)
# 12.1.0_r1 lunchnum
           35 (pixel 3a sargo)
           28 (pixel 4 flame)
# 13.0.0_r1 lunchnum
           22 (pixel 4 flame) # 22. aosp_flame-userdebug
# 14.0.0_r1 lunchnum
           39(pixel 5 redfin)aosp_redfin-userdebug
# 如果编译的是低版本android源码(8.1及以上版本不需要添加)
make update-api
 
make -j4
开始编译,默认为编译整个系统,其中 -j4 代表的是编译的job数量为4,即线程数
# make -j4 2>&1 | tee build.log (也可以使用该命令,将标准错误重定向到标准输出,同时输出到控制台和build.log文件中)

备注

除了操作系统版本这个问题外,我们还需要关注JDK版本问题,下面列出的不同Android版本的源码需要用到的JDK版本:

Android版本 编译要求的JDK版本
AOSP的Android主线 OpenJDK 8
Android 5.x 至 android 6.0 OpenJDK 7
Android 2.3.x 至 Android 4.4.x Oracle JDK 6
Android 1.5 至 Android 2.2.x Oracle JDK 5

查看手机对应设备号:https://developers.google.com/android/images#blueline
Android源码编译和刷机_第1张图片

2. Android源码刷机

# 刷编译的系统不是必须的,可以跑正常的系统检测,但是如果要验证打patch之后的效果,则需要在打patch之后的系统上检测验证。
4.把编译好的系统刷入手机的过程:
4.1. usb链接手机
4.2. 在out/target/product/xxx 目录下执行bash
     再执行export  ANDROID_PRODUCT_OUT=./
4.3. 然后执行adb -s 序列号 reboot bootloader进入手机的fastboot模式
4.4. 然后再fastboot -w flashall (需要先执行 source  build/envsetup.sh 设置必要的环境变量),会将目录下的所有 .img 文件烧录到手机

你可能感兴趣的:(android)