Rockchip Android平台系统瘦身实战:从内核到应用的全链路裁剪

张开发
2026/4/11 19:45:43 15 分钟阅读

分享文章

Rockchip Android平台系统瘦身实战:从内核到应用的全链路裁剪
1. 为什么需要系统瘦身最近接手了一个嵌入式设备项目客户要求用Rockchip平台跑Android系统但内存只有1GB。刚开始我还有点担心毕竟现在Android系统越来越庞大1GB内存跑起来确实有点吃力。不过经过一番折腾发现只要做好系统裁剪完全可以让Android在低内存设备上流畅运行。系统瘦身的好处可不止节省内存这么简单。首先裁剪后的系统启动速度会明显提升这对用户体验至关重要。其次系统占用空间减少意味着可以节省存储成本对于量产设备来说每MB都意味着真金白银。最重要的是精简后的系统更稳定因为不必要的服务和组件都被移除了潜在的问题点自然就少了。2. 从32位系统开始2.1 为什么要用32位系统很多人可能不知道64位系统虽然性能更好但内存占用也更高。对于1GB内存的设备来说32位系统是更好的选择。我实测过同样的Android系统32位版本能节省约15%的内存占用。修改方法很简单找到device/rockchip/rk356x/BoardConfig.mk文件把原来的64位配置改成32位。具体来说就是把TARGET_2ND_开头的配置移到TARGET_ARCH开头的配置上然后注释掉所有TARGET_2ND_开头的配置项。2.2 Android GO配置Android GO是Google专门为低配设备优化的版本。在BoardConfig.mk中添加一行BUILD_WITH_GO_OPT : true这个配置会自动启用一系列优化包括更严格的内存管理、精简的系统服务等。我在RK3566平台上测试启用GO配置后系统内存占用减少了约20%。3. 内核裁剪实战3.1 内核裁剪思路Rockchip提供的默认内核配置为了兼容各种硬件包含了大量可能用不到的驱动和功能。我们的目标是根据实际硬件配置只保留必要的部分。以RK3566为例首先备份原始的rockchip_defconfig文件然后开始修改。我的经验是先确定设备上实际有哪些硬件然后对照内核配置一项项检查。3.2 具体裁剪内容去掉调试信息# CONFIG_DEBUG_INFO is not set # CONFIG_DEBUG_FS is not set调试信息会显著增加内核大小量产设备完全可以去掉。硬件驱动裁剪 根据实际硬件情况去掉不需要的驱动。比如设备没有PCIE接口就注释掉所有PCIE相关配置# CONFIG_PCI is not set # CONFIG_PCIEPORTBUS is not set外设驱动 仔细检查触摸屏、传感器、摄像头等外设驱动。比如只使用GT9XX触摸屏其他触摸屏驱动都可以去掉#CONFIG_TOUCHSCREEN_GSLX6801 is not set CONFIG_TOUCHSCREEN_GT9XXy3.3 裁剪效果经过上述裁剪后内核镜像从31MB减小到26MB启动时间从4.99秒缩短到1.02秒。这个提升非常明显特别是对于需要快速启动的设备来说。4. U-Boot裁剪技巧4.1 U-Boot裁剪重点U-Boot裁剪主要关注两个方面一是去掉不必要的命令和功能二是优化启动流程。在RK3568_defconfig中我们可以做以下修改存储设备支持 如果设备使用eMMC可以去掉NAND和SPI Flash支持# CONFIG_SPL_NAND_SUPPORTy # CONFIG_SPL_SPI_FLASH_SUPPORTy安全启动 如果不需要Verified Boot可以关闭AVB# CONFIG_ANDROID_AVBy4.2 裁剪效果经过裁剪后U-Boot启动时间从1139ms减少到1117ms。虽然看起来不多但对于整个系统启动时间的优化还是有帮助的。5. Android服务裁剪5.1 系统服务裁剪Android系统默认包含大量服务很多在嵌入式设备上用不到。可以在以下文件中进行配置target/product/base_system.mktarget/product/handheld_system.mk比如可以去掉蓝牙服务、NFC服务等。我建议采用渐进式裁剪先注释掉可疑的服务测试系统功能确认没问题后再永久删除。5.2 磁盘加密优化如果设备不需要数据加密可以关闭磁盘加密功能。这能节省约1秒的启动时间。修改方法是在device.mk中添加PRODUCT_SHIPPING_API_LEVEL : 28 PRODUCT_ENFORCE_VINTF_MANIFEST : true6. 预装APK优化6.1 Rockchip平台APK裁剪Rockchip SDK默认会预装一些APK这些都可以根据实际需求裁剪。对于Android11修改文件是vendor/rockchip/common/apps/apps.mk我通常会保留基本的系统功能去掉所有非必需的APK。比如浏览器、邮件客户端等都可以去掉。6.2 资源文件优化除了APK本身还要注意资源文件的优化。包括删除不必要的语言包优化图片资源压缩音频/视频资源这些优化可以显著减少系统镜像大小。7. 其他优化技巧7.1 启动动画优化默认的启动动画可能会占用较多内存。可以考虑使用更简单的动画减少动画帧数提前结束动画7.2 内存管理调优在build.prop中添加以下参数可以优化内存管理dalvik.vm.heapgrowthlimit128m dalvik.vm.heapsize256m7.3 后台服务限制在设备配置中限制后台服务数量ro.config.max_starting_bg8经过这一系列优化后1GB内存的Rockchip设备运行Android系统就流畅多了。在实际项目中我通过这些方法成功将系统内存占用控制在500MB以内完全满足客户需求。

更多文章