当前位置: 首页 > news >正文

RK3588 编译 Android 13 镜像方法

下载Android SDK源代码
# 下载完成后,在解压前先校验下MD5码:
$ md5sum -c android*.txt
android*_rk35xx_*_sdk.tar.gzaa: OK
android*_rk35xx_*_sdk.tar.gzab: OK
android*_rk35xx_*_sdk.tar.gzac: OK
android*_rk35xx_*_sdk.tar.gzad: OK
android*_rk35xx_*_sdk.tar.gzae: OK
android*_rk35xx_*_sdk.tar.gzaf: OK
android*_rk35xx_*_sdk.tar.gzag: OK
android*_rk35xx_*_sdk.tar.gzah: OK# 解压Android源码
$ cat *.tar.gz* | tar -xzv#进入Android SDK根目录
$ cd android*#执行脚本安装依赖
$./install_dependencies.sh 并输入密码即可开始自动安装依赖。# 切换python2以保证u-boot编译通过
sudo ln -sf /usr/bin/python2 /usr/bin/python

编译SDK自带的板型

# 执行设置环境变量:
source build/envsetup.sh# 列出配置菜单
lunch
.............................................................
请注意:使用一键编译命令之前需要设置环境变量,选择好自己需要编译的平台
.............................................................61. rk3588s_lubancat_4_hdmi-user62. rk3588s_lubancat_4_hdmi-userdebug              HDMI接口63. rk3588s_lubancat_4_hdmi_tv-user64. rk3588s_lubancat_4_hdmi_tv-userdebug           HDMI Android12 TV版65. rk3588s_lubancat_4_mipi1080p-user66. rk3588s_lubancat_4_mipi1080p-userdebug         野火5.5寸屏幕67. rk3588s_lubancat_4_mipi600p-user68. rk3588s_lubancat_4_mipi600p-userdebug          野火7寸屏幕69. rk3588s_lubancat_4_mipi800p-user70. rk3588s_lubancat_4_mipi800p-userdebug          野火10.1寸屏幕# 选择数字: 62
  • build.sh 一键编译

  • # -J16后面数字表示16个线程数,如果遇到编译报错或者内存不足可降低线程数
    ./build.sh -UKAu -J16
    
  • 生成的固件位于rockdev/Image-rk3568_lubancat_2_hdmi目录下:

  • ~/android11/rockdev/Image-rk3568_lubancat_2_hdmi$ ll
    total 3622700
    drwxrwxr-x 2 d d       4096 Sep  8 07:34 ./
    drwxrwxr-x 5 d d       4096 Sep 13 02:50 ../
    -rwxrwxr-x 1 d d    1048576 Aug  1 10:14 baseparameter.img*
    -rw-rw-r-- 1 d d   35432448 Sep  8 07:27 boot-debug.img
    -rw-rw-r-- 1 d d   35284992 Sep  8 07:26 boot.img
    -rwxrwxr-x 1 d d       6129 Aug  1 10:14 config.cfg*
    -rw-rw-r-- 1 d d        623 Sep  8 07:26 dtbo.img
    -rw-rw-r-- 1 d d     465344 Sep  8 05:42 MiniLoaderAll.bin
    -rw-rw-r-- 1 d d      49152 Aug  1 11:10 misc.img
    -rw-rw-r-- 1 d d        630 Sep  8 07:26 parameter.txt
    -rw-rw-r-- 1 d d      49152 Aug  1 11:10 pcba_small_misc.img
    -rw-rw-r-- 1 d d      49153 Aug  1 11:10 pcba_whole_misc.img
    -rw-rw-r-- 1 d d  127311872 Sep  8 07:27 recovery.img
    -rw-rw-r-- 1 d d    2636288 Sep  8 07:25 resource.img
    -rw-r--r-- 1 d d 1667579532 Sep  8 07:30 super.img
    -rw-rw-r-- 1 d d    4194304 Sep  8 05:42 uboot.img
    -rw-rw-r-- 1 d d 1836413514 Sep  8 07:34 update.img   <----这就是打包完成的Android镜像
    -rwxrwxr-x 1 d d       4096 Aug  1 10:14 vbmeta.img
    
  • 可使用./build.sh单独编译:

  • # 编译U-boot
    ./build.sh -U# 编译 Kernel
    ./build.sh -K# 编译Android
    ./build.sh -A# 镜像打包
    ./build.sh -u# 线程数
    ./build.sh -J# 打包update.zip升级包
    ./build.sh -Auo
  • # 执行设置环境变量:
    source build/envsetup.sh#清理建构
    make clean# 列出配置菜单
    lunch
    .............................................................
    请注意:使用一键编译命令之前需要设置环境变量,选择好自己需要编译的平台
    .............................................................63. rk3588s_lubancat_4_hdmi_tv-user64. rk3588s_lubancat_4_hdmi_tv-userdebug           HDMI Android12 TV版# 选择数字: 63
    
  • build.sh 一键编译

  • ./build.sh -UKAu -J16
    

    了解./build.sh菜单

    dev@dev/rk356x-lubancat-android1x$./build.sh: option requires an argument --
    USAGE: [-U] [-CK] [-A] [-p] [-o] [-u] [-v VERSION_NAME]
    No ARGS means use default build option
    WHERE: -U = build uboot-C = build kernel with Clang-K = build kernel-A = build android-p = will build packaging in IMAGE-o = build OTA package-u = build update.img-v = build android with 'user' or 'userdebug'-d = huild kernel dts name-V = build version-J = build jobs- 编译kernel             ./build.sh -K
    - 编译uboot              ./build.sh -U
    - 编译android            ./build.sh -A
    - 编译kernel with Clang  ./build.sh -C
    - 打包固件               ./build.sh -u
  • 预置第三方apk

    预置不可卸载、可卸载的apk

  • 首先进入指定目录:device/rockchip/rk356x/rk3568_lubancat_2_hdmi

  • # 创建存放不可卸载应用的文件夹
    mkdir preinstall# 创建存放可卸载应用的文件夹
    mkdir preinstall_del_forever# 创建存放卸载后可通过恢复出厂设置复原的应用的文件夹
    mkdir preinstall_del将APK文件放入对应目录的示例:# 将一个APK放入不可卸载目录
    cp /path/to/your_app.apk ./preinstall/# 将一个APK放入可卸载目录
    cp /path/to/your_app2.apk ./preinstall_del_forever/# 将一个APK放入可卸载但可恢复目录
    cp /path/to/your_app3.apk ./preinstall_del/注意事项:确保路径 device/rockchip/rk356x/rk3568_lubancat_2_hdmi 存在,替换 /path/to/your_app.apk 为您实际的APK文件路径
    
  • APK文件名建议:

  • 使用英文命名
    避免使用中文字符
    建议使用小写字母和下划线
    示例:myapp_v1.0.apk
    

    根据需求只需将 apk 放在对应文件夹即可,比如将 lubancat.apk 设置为不可卸载应用,那么需要放进preinstall文件夹中。编译镜像烧写进去会发现已预置apk。

  • 制作OTA升级包

    构建完整更新

  • 先编译0.0.2版本修改device/rockchip/rk3588/device.mk,找到ro.product.version = 0.0.1 改为 0.0.2

  • 构安卓12的时候,带o,./build.sh -Auo 是打包update ota升级版,形成文件名是rk3588s_lubancat_4_v1_hdmi-ota-eng.dev.zip
    编译完成后,会在rockdev/Image-rk3588_lubancat_4_hdmi/目录下生成所需镜像,如下所示:
    dev@dev:~/android/android12-dev/rockdev/Image-rk3588s_lubancat_4_v1_hdmi$ ll
    ........
    -rw-rw-r-- 1 dev dev  725114113 Oct 18 07:54 rk3588s_lubancat_4_v1_hdmi-ota-eng.dev.zip
    -rw-rw-r-- 1 dev dev 2011523312 Oct 18 07:54 rk3588s_lubancat_4_v1_hdmi-target_files-eng.dev.zip
    .......将 rk3588s_lubancat_4_v1_hdmi-ota-eng.dev.zip 重命名为 ota-update.zip 完整升级包。
    mv ./rockdev/Image-rk3588s_lubancat_4_v1_hdmi/rk3588s_lubancat_4_v1_hdmi-ota-eng.dev.zip ./ota-update.ziprk3588s_lubancat_4_v1_hdmi-target_files-eng.dev.zip的0.0.2版本作为基础素材包,重命名为0.0.2.zip备份下来,用来制作增量升级包会用到。
    mv ./rockdev/Image-rk3588s_lubancat_4_v1_hdmi/rk3588s_lubancat_4_v1_hdmi-target_files-eng.dev.zip ./0.0.2.zip
    

    再次编译0.0.3

  • 接着修改device/rockchip/rk3588/device.mk,找到ro.product.version = 0.0.2 改为 0.0.3

  • ./build.sh -UCKAuo编译完成后,会在rockdev/Image-rk3588_lubancat_4_hdmi/目录下生成所需镜像,如下所示:
    dev@dev:~/android/android12-dev/rockdev/Image-rk3588s_lubancat_4_v1_hdmi$ ll
    ........
    -rw-rw-r-- 1 dev dev  725114113 Oct 18 07:54 rk3588s_lubancat_4_v1_hdmi-ota-eng.dev.zip
    -rw-rw-r-- 1 dev dev 2011523312 Oct 18 07:54 rk3588s_lubancat_4_v1_hdmi-target_files-eng.dev.zip
    .......将rk3588s_lubancat_4_v1_hdmi-target_files-eng.dev.zip 重命名 为0.0.3.zip
    mv ./rockdev/Image-rk3588s_lubancat_4_v1_hdmi/rk3588s_lubancat_4_v1_hdmi-target_files-eng.dev.zip ./0.0.3.zip
    

    将上面0.0.2.zip和0.0.3.zip进行备份保存

    构建增量更新

    执行下面代码将制作OTA增量包
    ota_from_target_files --block -v -i 0.0.2.zip -p out/host/linux-x86 -k build/target/product/security/testkey 0.0.3.zip files-update.zip
    会形成files-update.zip增量升级包在当前目录。这个命令是使用Ota(Over-the-air)工具从目标文件中读取数据,用于OTA更新。
    下面分解每个选项:
    -block: 使用block模式进行OTA read。
    -v: 增加 verbosity,显示更多详细信息。
    -i <zip_file>: 指定要从哪个 zip 压缩包中读取数据,这里是指 0.0.2.zip。
    -p <out_dir>: 指定输出 directory,用于存储从目标文件中读取的数据。这里是 out/host/linux-x86。
    -k <key_file>: 指定密钥文件,用于加密或解密读取的数据。这里是 build/target/product/security/testkey。
    这个命令会从 0.0.2.zip 和 0.0.3.zip 中读取数据,并将其存储在 out/host/linux-x86目录中,使用 testkey 密钥进行加密或解密。

http://www.xdnf.cn/news/1154773.html

相关文章:

  • 用C语言实现控制台应用的按键方向控制
  • Qt的安装和环境配置
  • 【愚公系列】《MIoT.VC》002-构建基本仿真工作站(布局一个基本工作站)
  • OPC UA, CAN, PROFINET, SOCKET, MODBUS, HTTP, S7七种物联网常用协议解释
  • 金融工程、金融与经济学知识点
  • Claude 3模型深度剖析:架构创新与性能突破
  • JAVA面试宝典 -《容灾设计:异地多活架构实践》
  • 从零搭建智能搜索代理:LangGraph + 实时搜索 + PDF导出完整项目实战
  • 从TPACK到TPACK - AI:人工智能时代教师知识框架的重构与验证
  • Kubernetes中为ELK组件配置持久化存储
  • nginx定期清理日志
  • 线程池的状态
  • AI开发 | 基于FastAPI+React的流式对话
  • sqli-labs通关笔记-第09关 GET时间盲注(单引号闭合 手工注入+脚本注入两种方法)
  • Docker Desktop 入门教程(Windows macOS)
  • Elasticsearch 简化指南:GCP Google Compute Engine
  • 相似度计算
  • COGNEX康耐视IS5403-01智能相机加Navitar 18R00 LR1010WM52镜头
  • IP协议介绍
  • GPT-4o mini TTS:领先的文本转语音技术
  • VTM 是“H.266/VVC 标准的官方参考软件”视频分析,入门教程,它存在的唯一目的就是“让学术界和工业界在同一把尺子上做实验
  • Docker 在 Ubuntu 系统中的详细操作指南
  • 事务的传播行为,分别在spring和mysql中讲解
  • CentOS 服务器docker pull 拉取失败
  • 相机模型和对极几何
  • MySQL(147)如何进行跨平台迁移?
  • 【LeetCode 热题 100】124. 二叉树中的最大路径和——DFS
  • 后台管理系统登录模块(双token的实现思路)
  • [Python] -项目实战4- 利用Python进行Excel批量处理
  • 将EXCEL或者CSV转换为键值对形式的Markdown文件