RK3588 Android12 SDK 中在device介绍及如何新建自己的产品lunch项

文章目录

  • RK3588 Android12 SDK 中在device介绍及如何新建自己的产品lunch项
    • 目的
    • RK3588 Android12的device结构
    • devices下产品相关配置介绍
      • Rockchip Android平台通用配置
      • RK3588芯片平台配置
      • 产品配置
    • 新建自己的产品目录(新加lunch项)

目的

RK3588 Android12 在编译的时候需要先lunch选择产品,这个lunch项会根据不同的产品配置对应的参数,比如配置系统参数、配置产品个性化需求、是否支持HDMI、是否支持4G网络、配置分区信息等等。可以针对不同的产品新建对应的lunch,满足在同一套代码下开发不同产品的需求。本文将介绍RK3588 Android12的device结构和如何新建一个产品lunch。

RK3588 Android12的device结构

RK3588 Android12的device结构如下图,一个产品的配置包括common、rk3588、产品目录,分别对应Android平台配置、芯片平台配置、产品配置这三级,从下往上include。

devices下产品相关配置介绍

Rockchip Android平台通用配置

代码路径:device/rockchip/common
这个目录下通常不需要修改,如果有修改可以在产品目录下重写对应的配置进行overlay。 主要内容包括如下:

  • 编译脚本
    包括编译脚本和工具:
device/rockchip/common/build/rockchip/build.sh //编译脚本
device/rockchip/common/mkimage.sh //打包image的脚本
device/rockchip/common/scripts/fstab_tools/    //fstab自动生成工具及配置信息
device/rockchip/common/scripts/parameter_tools/    //parameter分区表自动生成工具及配置信息
  • init服务
ls device/rockchip/common/rootdir/
init.recovery.rk30board.rc    //recovery模式下init服务配置
init.rk30board.usb.rc   //usb相关的初始化服务和配置
ueventd.rockchip.rc     //设备节点初始化属性配置
init.rk30board.rc    //rockchip平台相关的初始化服务和配置
init.rockchip.rc   //rockchip平台相关的初始化服务和配置
  • sepolicy
    设备节点的selinux权限配置

     ls device/rockchip/common/sepolicy/       private  public  split  vendor
    
  • device.mk
    平台相关的配置及编译选项配置,可以在这里控制编译哪些模块,如app、模块等等
  • Boardconfig.mk
    平台默认的产品属性配置,以及平台功能的宏的定义和编译选项配置

RK3588芯片平台配置

代码路径:device/rockchip/rk3588

  • RK3588 的配置:device/rockchip/rk3588/Boardconfig.mk
    主要信息说明如下:
#CPUD的arm64(64位)的配置
TARGET_ARCH := arm64
TARGET_ARCH_VARIANT := armv8-a
TARGET_CPU_ABI := arm64-v8a
TARGET_CPU_ABI2 :=
TARGET_CPU_VARIANT := generic
TARGET_CPU_VARIANT_RUNTIME := cortex-a76#CPUD的arm32(32位)的配置
TARGET_2ND_ARCH := arm
TARGET_2ND_ARCH_VARIANT := armv8-a
TARGET_2ND_CPU_ABI := armeabi-v7a
TARGET_2ND_CPU_ABI2 := armeabi
TARGET_2ND_CPU_VARIANT := generic
TARGET_2ND_CPU_VARIANT_RUNTIME := cortex-a76#GPU信息:
TARGET_BOARD_PLATFORM := rk3588
TARGET_BOARD_PLATFORM_GPU := mali-G610#配置kernel版本
PRODUCT_KERNEL_VERSION := 5.10#其他相关信息
  • 编译和系统属性配置:device/rockchip/rk3588/device.mk

主要信息说明如下:

#编译是拷贝文件
PRODUCT_COPY_FILES += \$(LOCAL_PATH)/init.rk3588.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.rk3588.rc \$(LOCAL_PATH)/wake_lock_filter.xml:system/etc/wake_lock_filter.xml \$(LOCAL_PATH)/package_performance.xml:$(TARGET_COPY_OUT_ODM)/etc/package_performance.xml \$(TARGET_DEVICE_DIR)/media_profiles_default.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml\
#配置系统prop属性
#
# add Rockchip properties here
#
PRODUCT_PROPERTY_OVERRIDES += \ro.ril.ecclist=112,911 \ro.opengles.version=196610 \wifi.interface=wlan0 \ro.audio.monitorOrientation=true \debug.nfc.fw_download=false \debug.nfc.se=false \vendor.hwc.compose_policy=1 \sys.wallpaper.rgb565=0 \sf.power.control=2073600 \sys.rkadb.root=0 \ro.sf.fakerotation=false \ro.tether.denied=false \sys.resolution.changed=false \ro.default.size=100 \ro.product.usbfactory=rockchip_usb \wifi.supplicant_scan_interval=15 \ro.factory.tool=0 \ro.kernel.android.checkjni=0 \ro.build.shutdown_timeout=6 \persist.enable_task_snapshots=false \ro.vendor.frameratelock=true

产品配置

代码路径:
device/rockchip/rk3588/rk3588_s
device/rockchip/rk3588/rk3588s_s
device/rockchip/rk3588/rk3588_box
device/rockchip/rk3588/rk3588_xr
以rk3588_s为例说明:

wlq@sys2_206:~/3_Android12_29_debug/device/rockchip/rk3588/rk3588_s$ ls
AndroidBoard.mk   //配置lunch信息
BoardConfig.mk    //配置产品相关编译宏,并且包含device/rockchip/rk3588/BoardConfig.mk
config.cfg     //固件烧写工具的配置文件
config.cfg_ab_gki
media_profiles_default.xml  //配置多媒体的信息,如支持格式等
preinstall     //将要预安装的apk放在这里目录下即可实现apk于安装
recovery.fstab_AB   //AB系统的recovery分区表
Android.mk
bt_vendor.conf  //蓝牙的配置文件,可以配置蓝牙使用的串口等信息
config.cfg_ab  //AB系统固件烧写工具的配置文件
dt-overlay.in   //dtbo的配置信息
ota  //ota升级loader和parameter的源文件存放目录
rk3588_s.mk //产品级的编译和属性配置文件
  • 产品配置信息:BoardConfig.mk
include device/rockchip/rk3588/BoardConfig.mk
BUILD_WITH_GO_OPT := false  #配置是否启用go配置,可以节省内存但是部分功能受限# AB image definition
BOARD_USES_AB_IMAGE := false
BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE := false# 配置支持的sensor类型
BOARD_GRAVITY_SENSOR_SUPPORT := true
BOARD_COMPASS_SENSOR_SUPPORT := true
BOARD_SENSOR_COMPASS_AK8963-64 := true
BOARD_GYROSCOPE_SENSOR_SUPPORT := true
BOARD_PROXIMITY_SENSOR_SUPPORT := true
BOARD_LIGHT_SENSOR_SUPPORT := trueifeq ($(strip $(BOARD_USES_AB_IMAGE)), true)include device/rockchip/common/BoardConfig_AB.mkTARGET_RECOVERY_FSTAB := device/rockchip/rk3588/rk3588_s/recovery.fstab_AB
endif#配置产品的默认编译信息,如默认dts、uboot config等
PRODUCT_UBOOT_CONFIG := rk3588
PRODUCT_KERNEL_DTS := rk3588-evb1-lp4-v10
BOARD_GSENSOR_MXC6655XA_SUPPORT := true
#配置是否支持usb camera
BOARD_CAMERA_SUPPORT_EXT := true
#配置是否支持以太网
BOARD_HS_ETHERNET := true
#配置是否支持HDMI-IN
BOARD_HDMI_IN_SUPPORT := true
  • 产品编译和属性配置信息:rk3588_s.mk
# First lunching is S, api_level is 31
PRODUCT_SHIPPING_API_LEVEL := 31
PRODUCT_DTBO_TEMPLATE := $(LOCAL_PATH)/dt-overlay.ininclude device/rockchip/common/build/rockchip/DynamicPartitions.mk
include device/rockchip/rk3588/rk3588_s/BoardConfig.mk
include device/rockchip/common/BoardConfig.mk
$(call inherit-product, device/rockchip/rk3588/device.mk)
$(call inherit-product, device/rockchip/common/device.mk)
$(call inherit-product, frameworks/native/build/tablet-10in-xhdpi-2048-dalvik-heap.mk)DEVICE_PACKAGE_OVERLAYS += $(LOCAL_PATH)/../overlayPRODUCT_CHARACTERISTICS := tablet
#配置产品名称信息
PRODUCT_NAME := rk3588_s
PRODUCT_DEVICE := rk3588_s
PRODUCT_BRAND := rockchip
PRODUCT_MODEL := rk3588_s
PRODUCT_MANUFACTURER := rockchip
PRODUCT_AAPT_PREF_CONFIG := mdpi
#
## add Rockchip properties
#
PRODUCT_PROPERTY_OVERRIDES += ro.sf.lcd_density=320
PRODUCT_PROPERTY_OVERRIDES += ro.wifi.sleep.power.down=true
PRODUCT_PROPERTY_OVERRIDES += persist.wifi.sleep.delay.ms=0
PRODUCT_PROPERTY_OVERRIDES += persist.bt.power.down=true
PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.primary=DSI
PRODUCT_PROPERTY_OVERRIDES += vendor.hwc.device.extend=HDMI-A,eDP
PRODUCT_PROPERTY_OVERRIDES += sys.mouse.presentation=1

新建自己的产品目录(新加lunch项)

以RK3588平台新建rk3588s_s产品为例,分以下步骤:
1)修改device/rockchip/rk3588/AndroidProducts.mk增加rk3588s_s的lunch

--- a/AndroidProducts.mk
+++ b/AndroidProducts.mk
@@ -17,10 +17,14 @@PRODUCT_MAKEFILES := \       $(LOCAL_DIR)/rk3566_s/rk3588_s.mk \
+        $(LOCAL_DIR)/rk3588_s/rk3588s_s.mk \COMMON_LUNCH_CHOICES := \rk3588_s-userdebug \rk3588_s-user \
+    rk3588s_s-userdebug \
+    rk3588s_s-user \

2)在device/rockchip/rk3588目录下新建rk3588s_s目录
参考device/rockchip/rk3588下已有的rk3588_s产品目录新建,可以先直接拷贝rk3588_s为rk3588s_s,然后将rk3588s_s目录下的所有rk3588_s字符改为rk3588s_s

RK3588 Android12 SDK 中在device介绍及如何新建自己的产品lunch项相关推荐

  1. 基于Rockchip RK3588 Android12 SDK搭建自己的repo 仓库服务器

    基于Rockchip RK3588 Android12 SDK搭建自己的repo 仓库服务器 文章目录 基于Rockchip RK3588 Android12 SDK搭建自己的repo 仓库服务器 搭 ...

  2. nrf5 SDK中 FDS(Flash Data Storage)介绍

    本文档 基于SDK13.1 Fds(Flash Data Storage)模块是sdk中提供的操作flash的模块. 前面介绍过fs(Flash Storage)模块,这个模块也是sdk中提供的操作f ...

  3. android java包_android SDk中常用的java包介绍

    下面是android SDK中API中的主要java包的功能简介: android.app :提供高层的程序模型.提供基本的运行环境 android.content :包含各种的对设备上的数据进行访问 ...

  4. Rockchip RK3588 Android SDK编译方法

    Rockchip RK3588 Android SDK编译方法 Rockchip RK3588 Android SDK在原始Android的编译方式的基础上封装了一个编译脚本build.sh,用来简化 ...

  5. 详解安卓应用性能测试方法以及Android SDK中辅助测试的工具使用

    Android前端APP的性能测试一般针对以下几个方面:应用启动时间:CPU的占用:内存的占用:流量的耗用:电量的耗用:流畅度等.一般对App进行性能测试都需要借助不同的工具完成,本章节会向读者重点介 ...

  6. 【音视频】在SDK中集成windows视音频设备热插拔功能(5-2)

    上一篇实现了windows的音视频设备热插拔功能,这一篇集成到SDK中.我的对外接口类是HCMDesktopRecorder,该篇主要讲如何集成热插拔功能,其他代码忽略. 1.开启并注册热插拔 int ...

  7. 在sdk中添加源文件_实用干货 | 一步一步教你在SpringBoot中集成微信刷卡支付

    一:准备工作 使用微信支付需要先开通服务号,然后还要开通微信支付,最后还要配置一些开发参数,过程比较多. 申请服务号(企业) 开通微信支付 开发配置 具体准备工作请参考Spring Boot入门教程( ...

  8. Linux 内核中的 Device Mapper 机制

    本文结合具体代码对 Linux 内核中的 device mapper 映射机制进行了介绍.Device mapper 是 Linux 2.6 内核中提供的一种从逻辑设备到物理设备的映射框架机制,在该机 ...

  9. TF:tensorflow框架中常用函数介绍—tf.Variable()和tf.get_variable()用法及其区别

    TF:tensorflow框架中常用函数介绍-tf.Variable()和tf.get_variable()用法及其区别 目录 tensorflow框架 tensorflow.Variable()函数 ...

最新文章

  1. Cisco产品线一览
  2. 【数字智能三篇】之二: 一页纸说清楚“什么是推荐系统?”
  3. WPF系列学习之三(路由事件)
  4. PHP 在线 编辑 解析
  5. day1 -- Python变量、注释、格式化输出字符串、input、if、while、for
  6. Android 源代码下载
  7. 字符串匹配算法——KMP算法学习
  8. java 奇数 字符乱码_socket中文奇数个出现乱码的解决办法
  9. Emacs 中英文字体设置
  10. 彻底理解文本主题模型LDA(极致原理讲解+实战)
  11. SmartGit 无限试用方法
  12. vba连接mysql前的准备_VBA连接MYSQL数据库方法及案例
  13. 物联网中对视频远程传输解决方案
  14. 前端工程师的摸鱼日常(13)
  15. java根据物流单号查询物流详细
  16. 【人工智能】机器学习:岭回归与LASSO回归(Ridge/LASSO Regression)
  17. 哈特曼医用音叉行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  18. 线上英语教学APP开源平台(定制制作)
  19. 接口报错500是什么意思_接口测试遇到500报错?别慌,你的头部可能有点问题!...
  20. 中式客厅装修的特点 亦古亦今的惊艳每一家

热门文章

  1. uniapp生成canvas商品海报
  2. Java基于JSP的论坛交流系统
  3. 《Android Studio开发实战》学习(五) - 截图
  4. 离散数学学习笔记(一)
  5. Android Zygote进程启动过程
  6. Android两个canvas混合叠加,Android Canvas设置绘画时重叠部分的处理模式【含效果图】...
  7. Mybatis中模糊查询的SQL语句应该怎么写?
  8. 酷家乐怎样把两个方案合并_两个地产科技的理工男联姻:他们都想做一家云端的Autodesk...
  9. linux怎么sftp传文件,Linux 如何使用SFTP命令传输文件
  10. win10修改user用户名,完美解决,亲试无bugs