ZNDS智能电视网 推荐当贝市场

TV应用下载 / 资源分享区

软件下载 | 游戏 | 讨论 | 电视计算器

综合交流 / 评测 / 活动区

交流区 | 测硬件 | 网站活动 | Z币中心

新手入门 / 进阶 / 社区互助

新手 | 你问我答 | 免费刷机救砖 | ROM固件

查看: 33044|回复: 1
上一主题 下一主题
[软件教程分享]

【转帖】Android STB ROM体积精简

[复制链接]
跳转到指定楼层
楼主
发表于 2021-11-16 22:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

文章目录
一、update.zip结构简介
1.1 boot.img
1.2 system目录
1.3 META-INF目录
二、系统体积精简
2.1 system/app
2.2 system/bin
2.3 system/lib
2.4 system/media
2.5 system/preinstall
2.6 system/tts
2.7 芯片特殊文件
三、update.zip精简效果验证
  本系列文章:
    Android STB 遥控器适配
    Android STB ROM体积精简
    Android STB 添加系统接口
    Android STB 高效调试技巧
    Android STB 海思平台调试
    Android STB HDMI开发
    Android STB 编译自定义jar

  在目前的机顶盒ROM中,系统可以精简的地方有很多,本篇文章基于Android4.4.2系统,简单介绍下一些常见的系统精简方式。

一、update.zip结构简介
  要进行系统体积精简,首先就要了解update.zip的目录结构。各个芯片平台,都有定制过自己的update.zip,所以update.zip里的内容不是完全一样的,但有些公共性的文件是一样的,如


1.1 boot.img
    boot.img是更新boot分区所需要的文件,主要包括kernel+ramdisk。

1.2 system目录
    system目录的内容在升级后会放在系统的system分区,主要用来更新系统的apk、so、bin等,在系统源码中对应着out/target/product/xxx/system/中的所有文件。

1.3 META-INF目录
    CERT.RSA:与签名文件相关联的签名程序块文件,它存储了用于签名JAR文件的公共签名。
    CERT.SF:JAR文件的签名文件,其中前缀CERT代表签名者。
    MANIFEST.MF:定义了与包的组成结构相关的数据,类似上层Android应用的mainfest.xml文件。
    metadata:描述设备信息及环境变量的元数据,主要包括一些编译选项,签名公钥,时间戳以及设备型号等。
    otacert:具体的签名检验文件,里面存放着签名校验的字符串。
    update-binary:二进制文件,相当于一 个脚本解释器,能够识别updater-script中描述的操作。
    updater-script:脚本文件,具体描述了更新过程。

二、系统体积精简
  此处指的是对update.zip体积进行精简,主要针对system目录进行,具体见于下文。

2.1 system/app
  该目录存放的是系统应用,基于Android4.4.2系统,可裁剪的应用见于下表:




分类        应用名称        包名        功能说明
墙纸        WallpaperCropper.apk        com.android.wallpaper        Basic动态墙纸
墙纸        Galaxy4.apk        com.android.galaxy4        Galaxy4 动态墙纸
墙纸        HoloSpiral.aapk        com.android.wallpaper.holospiral        HoloSpiral动态墙纸
墙纸        LiveWallpapersPicker.apk        com.android.wallpaper.livepicker        动态墙纸选择器
墙纸        MagicSmoke.apk        com.android.magicsmoke        MagicSmoke动态墙纸
墙纸        MusicVisualization.apk        com.android.musicvis        MusicVisualization动态墙纸
墙纸        NoiseField.apk        com.android.noisefield        NoiseField动态墙纸
墙纸        PhaseBeam.apk        com.android.phasebeam        PhaseBeam动态墙纸
屏保        BasicDreams.apk        com.android.dreams.basic        Basic屏保
屏保        PhotoTable.apk        com.android.dreams.phototable        PhotoTable屏保
屏保        WebViewDream.apk        com.android.dreams.web        WebView屏保
短信/彩信/电话        BasicSmsReceiver.apk        com.android.basicsmsreceiver        基础短信接收
短信/彩信/电话        Mms.apk        com.android.mms        彩信
短信/彩信/电话        Telephony.apk        com.android.phone        电话应用
短信/彩信/电话        TelephonyProvider.apk        com.android.providers.telephony        电话记录 Content Provider
短信/彩信/电话        VoiceDialer.apk        com.android.voicedialer        语音拨号器
短信/彩信/电话        InCallUI.apk        com.android.incallui        拨号盘
短信/彩信/电话        CellBroadcastReceiver.apk        com.android.cellbroadcastreceiver        小区广播
通讯录        Contacts.apk        com.android.contacts        联系人
通讯录        ContactsProvider.apk        ContactsProvider        联系人 Content Provider
浏览器        Browser.apk        com.android.Browser        系统浏览器
浏览器        HTMLViewer.apk        com.android.htmlviewer        简易HTMLView
计算器        Calculator.apk        com.android.calculator2        计算器
日历        Calendar.apk        com.android.Calendar        日历
日历        CalendarProvider.apk        com.android.providers.calendar        日程表 Content Provider
邮件        Email.apk        com.android.email        邮件应用
邮件        UnifiedEmail.apk        com.android.mail        邮件
图库        Gallery2.apk        com.android.gallery3d        图库
相机/录音/视频编辑        Camera.apk        com.android.camera        相机
相机/录音/视频编辑        Camera2.apk        com.android.camera2        相机
相机/录音/视频编辑        SpeechRecorder.apk        com.android.speechrecorder        语音录制
相机/录音/视频编辑        SoundRecorder.apk        com.android.SoundRecorder        音频录制
相机/录音/视频编辑        VideoEditor.apk        com.android.VideoEditor        视频编辑器
桌面        Launcher2.apk        com.android.launcher        原生launcher2
桌面        Launcher3.apk        com.android.launcher3        原生launcher3
音乐        Music.apk        com.android.music        音乐播放器
音乐        MusicFX.apk        com.android.musicfx        音乐控制面板
桌面小工具        DeskClock.apk        com.android.deskclock        时钟
桌面小工具        Protips.apk        com.android.protips        桌面帮助提示
桌面小工具        QuickSearchBox.apk        com.android.quicksearchbox        快速搜索框
其他        PartnerBookmarksProvider.apk        com.android.providers.partnerbookmarks        书签Content Provider
其他        SpareParts.apk        com.android.spare_parts        开发样例
其他        OneTimeInitializer.apk        com.android.onetimeinitializer        首次安装Google app工具
其他        UserDictionaryProvider.apk        com.android.providers.userdictionary        用户词典Content Provider
芯片自带应用        HiVideoPhoneTest.apk        com.android.videophonetest        视频测试工具
芯片自带应用        Hdcp1.4KeyLoadTool.apk        com.example.hidisplaytest        接口测试工具
芯片自带应用        MultiVideoTest.apk        com.android.multivideotest        多路视频测试工具
芯片自带应用        HiFactoryTest.apk        com.android.factorytest        厂测工具
芯片自带应用        HiGallery.apk        com.hisilicon.android.gallery3d        图库
芯片自带应用        ServiceSettings.apk        com.android.smart.terminal.iptv.aidl        中间件通信
芯片自带应用        HiGalleryL.apk        com.android.nativeimage.gallery        4K图库
芯片自带应用        PicturePlayer.apk        com.droidlogic.PicturePlayer        本地文件管理
芯片自带应用        Miracast.apk        com.amlogic.miracast        无线传屏
芯片自带应用        NativeImagePlayer.apk        com.droidlogic.imageplayer        图片播放器
2.2 system/bin
  该目录存放的是系统会使用到的脚本文件,该目录精简效果有限,主要的精简思路如下:
   1>检查是否有bin文件重复情况
    如xiriservice_All和xiriservice_tv,保留使用的bin文件即可。
   2>检查是否预置无效bin文件情况。
    比如未适配MediaAnalytics.apk时,就不用预置sqmloader、sqmpro.md5和sqm_setup.sh文件。

2.3 system/lib
  该目录存放的是系统自动编译出来的so文件及apk运行所需要的so。系统编译出来的so可以不用处理,但是当从app目录删除一个apk时,务必要检查该apk是否包含有so,如果有,则需要在lib目录删除对应的so。该目录精简效果最大,务必要进行。

2.4 system/media
  该目录主要存放的是系统所需的媒体文件,如开机动画、开机视频、音频文件等。该目录的精简主要可以从两方面进行:
   1>bootanimation.zip
    此文件即开机动画,主要检查下该zip包里是否有重复的图片文件,如果有过多重复的图片文件,可以删掉部分图片,然后修改desc.txt,达到图片重复播放的效果即可。
    举个例子,将bootanimation.zip解压后,part0目录有五个图片文件,分别为boot0.png、boot1.png、boot2.png、boot3.png、boot4.png。desc.txt内容为:

    1280 720 1
    p 1 0 part0
1
2
    此时,可以将part0目录下的五张图片任意删除4张,然后修改desc.txt内容为:

    1280 720 1
    p 5 0 part0
1
2
   2>audio目录
    该目录下存放的是系统所需要的的音频文件,不用保留Android原生的所有音频文件。如在Hi3798MV300平台上,所使用的音频文件可以通过"getprop |grep ogg"查看,如下:

    [ro.config.alarm_alert]: [Alarm_Classic.ogg]
    [ro.config.notification_sound]: [pixiedust.ogg]
    [ro.config.ringtone]: [Ring_Synth_04.ogg]
1
2
3
    如以上属性,则系统中只需保留Alarm_Classic.ogg、pixiedust.ogg]及Ring_Synth_04.ogg三个音频文件,其余ogg文件则不用编译到update.zip。需要修改的文件为:

    frameworks/base/data/sounds/AllAudio.mk
    frameworks/base/data/sounds/AudioPackage10.mk
    frameworks/base/data/sounds/AudioPackage11.mk
    frameworks/base/data/sounds/AudioPackage12.mk
    frameworks/base/data/sounds/AudioPackage12_48.mk
    frameworks/base/data/sounds/AudioPackage2.mk
    frameworks/base/data/sounds/AudioPackage3.mk
    frameworks/base/data/sounds/AudioPackage4.mk
    frameworks/base/data/sounds/AudioPackage5.mk
    frameworks/base/data/sounds/AudioPackage6.mk
    frameworks/base/data/sounds/AudioPackage7.mk
    frameworks/base/data/sounds/AudioPackage7alt.mk
    frameworks/base/data/sounds/AudioPackage8.mk
    frameworks/base/data/sounds/AudioPackage9.mk
    frameworks/base/data/sounds/OriginalAudio.mk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    将别的ogg不编译进版本的修改方式,示例如下:

--- a/frameworks/base/data/sounds/AllAudio.mk
+++ b/frameworks/base/data/sounds/AllAudio.mk
-     $(LOCAL_PATH)/Alarm_Beep_01.ogg:system/media/audio/alarms/Alarm_Beep_01.ogg \
+  #    $(LOCAL_PATH)/Alarm_Beep_01.ogg:system/media/audio/alarms/Alarm_Beep_01.ogg \
1
2
3
4
2.5 system/preinstall
  该目录主要存放的是系统所需要预安装的应用,此目录与app目录下的应用安装机制有所不同:app目录下的应用,开机后自动安装,而该目录下的apk一般需要调用脚本去安装。检查一下系统中是否需要预安装某个应用,如果不需要,直接在该目录删除即可。

2.6 system/tts
  该目录主要存放了一些语音播报相关的文件。目前机顶盒ROM中,语音交互功能大都由科大讯飞进行实现,所以该目录可以删掉。具体的处理方式与处理音频文件相似,需要修改以下文件:

    external/svox/pico/lang/PicoLangDeDeInSystem.mk
    external/svox/pico/lang/PicoLangEnGBInSystem.mk
    external/svox/pico/lang/PicoLangEsEsInSystem.mk
    external/svox/pico/lang/PicoLangItItInSystem.mk
    external/svox/pico/lang/PicoLangDefaultInSystem.mk
    external/svox/pico/lang/PicoLangEnUsInSystem.mk
    external/svox/pico/lang/PicoLangFrFrInSystem.mk
    external/svox/pico/lang/all_pico_languages.mk
1
2
3
4
5
6
7
8
  不生成system/tts目录的修改方式,示例如下:

--- a/external/svox/pico/lang/PicoLangDeDeInSystem.mk
+++ b/external/svox/pico/lang/PicoLangDeDeInSystem.mk
-PRODUCT_COPY_FILES += \
-        external/svox/pico/lang/de-DE_gl0_sg.bin:system/tts/lang_pico/de-DE_gl0_sg.bin \
-        external/svox/pico/lang/de-DE_ta.bin:system/tts/lang_pico/de-DE_ta.bin
+#PRODUCT_COPY_FILES += \
+#        external/svox/pico/lang/de-DE_gl0_sg.bin:system/tts/lang_pico/de-DE_gl0_sg.bin \
+#        external/svox/pico/lang/de-DE_ta.bin:system/tts/lang_pico/de-DE_ta.bin
1
2
3
4
5
6
7
8
2.7 芯片特殊文件
  如海思平台上的fastplay.img,即定制的开机视频播放文件,该文件可用一同名空文件替代。原因是:如果要指定开机视频,在system/media目录下直接预置boot.ts等视频文件即可,不要再制作该fastplay.img。

三、update.zip精简效果验证
  第二章节说的都是在源码中如何修改,其实在源码中进行修改之前,应该先用实际的update.zip进行精简的动作,验证效果,当验证删除一些文件对系统运行无异常影响时,再在代码中进行删减。具体的方法为:
   1>以zip方式打开update.zip,然后尝试删掉一些不需要的文件。
   2>对删掉一些文件后的update.zip进行签名,签名命令如下:

    java -Xmx2048m -jar signapk.jar  -w testkey.x509.pem testkey.pk8 update.zip update_signed.zip
1
  其中,所涉及的文件如下:

     signapk.jar :out/host/Linux-x86/framework/signapk.jar
     testkey.x509.pem:build/target/product/security/testkey.x509.pem         
     testkey.pk8:build/target/product/security/testkey.pk8
     update.zip:删除一些文件的升级包
     update_signed.zip:签名后的升级包
1
2
3
4
5
  至此,常见的机顶盒ROM体积精简方式介绍完毕。
————————————————
版权声明:本文为CSDN博主「解梦者」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_37741420/article/details/105863216


上一篇:【转帖】液晶电视EMMC读写方法和部分液晶主板ISP点位图
下一篇:河南电信机顶盒天邑TY1208-Z_S905M_B(主板号E365781)刷机教程
沙发
发表于 2021-12-21 11:16 | 只看该作者
厉害了楼主
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|新帖|标签|软件|Sitemap|ZNDS智能电视网 ( 苏ICP备2023012627号 )

网络信息服务信用承诺书 | 增值电信业务经营许可证:苏B2-20221768 丨 苏公网安备 32011402011373号

GMT+8, 2024-4-23 16:51 , Processed in 0.165946 second(s), 12 queries , Redis On.

Powered by Discuz!

监督举报:report#znds.com (请将#替换为@)

© 2007-2024 ZNDS.Com

快速回复 返回顶部 返回列表