0 android bringup过程梳理

文章目录

写在前面

主要是工作中需要在现有的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

    unable to execute command: Segmentation fault 这种问题,实在莫名其妙,我的代码tar包经过压缩解压 复制过来之后,会跟源代码有所不同,比较过后,有三个不同,其中一个只相差中间的一个字节,很费解,整理一下可能的几个原因
    1 tar的时候,压缩到解压缩过程中文件出错了,我将源码tar了之后 解包,使用diff工具跟原本的代码比较了一下,竟然有几个文件不一样,将源代码中不同文件重新复制过来,不要问我为什么,我也已经怀疑人生了。
    2 注意一下语言吧
    经验所得,那个 LANG 和LANGUAGE都配一下吧,比如
    export LANG=zh_CN.UTF-8
    export LANGUAGE=zh_CN:zh
    或者
    export LANG=en_US.UTF-8
    export LANGUAGE=en_US:en
    设置了之后,重新编译试试

    3 注意一下内存,这个原因网上可以找到增加swap的方式,正常来说,应该是把内存增大,如果不好增加 ,先试着减少编译的线程,就是-jn 里那个n,多线程同时编译,可能会遇到因为不足出现莫名其妙的问题。

    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

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

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

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值