文章目录
写在前面
主要是工作中需要在现有的android系统代码中添加一款产品,梳理一下android系统添加一个产品的移植步骤,此处已经假设你下载完了aosp的代码。
编译
先编译一下现有的代码,调试一下错误,主要是编译环境遇到的错,我将我遇到错误放在了最后,如果遇到相同的可以参考。
source build/envsetup.sh
lunch
make
这一步主要是会遇到一些奇奇怪怪的环境方面的问题,先编译一遍,要不然已经改了东西的话,咳咳,分不清是自己改的锅还是环境的锅,一言难尽。
新增分支
新增一个分支
mkdir device/rockchip/rk3326/PX30_Myandroid
cp -ra device/rockchip/rk3326/PX30_Android10/* device/rockchip/rk3326/PX30_Myandroid/
允许第三方定制Product配置,在源码/device/rockchip/rk3326目录下,需要分别新增/修改如下文件:
AndroidProducts.mk :指定 product 配置,并把 product 添加到 lunch 选择项中
product.mk :一个产品的软件相关的配置,比如内置哪些软件模块,由AndroidProducts.mk 中的PRODUCT_MAKEFILES指定(非固定)
BoardConfig.mk :芯片硬件相关配置,分区设置等
下面是我的修改
/device/rockchip/rk3326/AndroidProducts.mk:
主要是添加一个lunch选项
COMMON_LUNCH_CHOICES +=
PX30_Myandroid-userdebug \
PX30_Myandroid-user \
device/rockchip/rk3326/PX30_Myandroid/BoardConfig.mk:
主要是写硬件配置相关
PRODUCT_KERNEL_CONFIG : 里面有三个 并不是选择关系 是并列关系,将三个包含的选项都选择进去了 相应的目录为/kernel/arch/arm64/configs
// 定义板级信息:使用dts设备树文件、kernel的defconfig配置文件、uboot的defconfig配置文件
PRODUCT_KERNEL_DTS := px30-evb-ddr3-rgb-v10
PRODUCT_KERNEL_CONFIG := px30_android_defconfig android-10-go.config rk3326.config
PRODUCT_UBOOT_CONFIG := px30
device/rockchip/rk3326/PX30_Myandroid/PX30_Myandroid.mk:
mv PX30_Android10.mk PX30_Myandroid.mk
修改一下里面PX30_Android10 改为PX30_Myandroid
大概是这些
PRODUCT_NAME := PX30_Myandroid PRODUCT_DEVICE := PX30_Myandroid PRODUCT_BRAND := rockchip PRODUCT_MODEL := PX30_Myandroid
修改kernel
1 设备文件树
首先需要新建BoardConfig.mk 中指定的设备树文件
涉及需要修改的文件kernel/arch/arm64/boot/dts/rockchip/px30-evb-ddr3-rgb-v10.dts //新建:px30-evb-ddr3-v10.dts拷贝来进行修改 cd kernel/arch/arm64/boot/dts/rockchip cp px30-evb-ddr3-v10.dts px30-evb-ddr3-rgb-v10.dts
android
系统登录动画
Android 的系统登录动画类似于Windows系统的滚动条,是由前景和背景两张PNG图片组成:
frameworks/base/core/res/assets/images/android-logo-IP-mask.png
frameworks/base/core/res/assets/images/android-logo-IP-shine.png
前景图片(android-logo-mask.png)上的Android文字部分镂空,背景图片 (android-logo-shine.png)则是简单的纹理。系统登录时,前景图片在最上层显示,程序代码控制背景图片连续滚动,透过前景图片文字 镂空部分滚动显示背景纹理,从而实现动画效果
/frameworks/base/cmds/bootanimation/BootAnimation.cpp
bool BootAnimation::android()
{
initTexture(&mAndroid[0], mAssets, “images/android-logo-IP-mask.png”); // 前景
initTexture(&mAndroid[1], mAssets, “images/android-logo-IP-shine.png”); // 背景
}
编译时遇到的问题
记录下编译时候遇到的问题和一些解决方式
问题1
环境搭建时 ,shell中发现上下左右键是乱码 不能正常使用,表现为linux shell上左右上下键出现乱码^[[D ^[[C ^[[A ^[[B
查看shell环境
echo $SHELL
-
如果显示bin/sh, 那么试试输入
bash
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang++: note: diagnostic msg: /work3/tengxingru/Rockchip_Android10/out/soong/.temp/regexp-macro-assembler-tracer-85a75a.cpp
clang++: note: diagnostic msg: /work3/tengxingru/Rockchip_Android10/out/soong/.temp/regexp-macro-assembler-tracer-85a75a.sh
clang++: note: diagnostic msg:
14:54:04 ninja failed with: exit status 1