Android TV ROM体积精简

Android TV ROM体积精简,第1张

概述  在目前的机顶盒ROM中,系统可以精简的地方有很多,本篇文章基于Android4.4.2系统,简单介绍下一些常见的系统精简方式。一、update.zip结构简介  要进行系统体积精简,首先就要了解update.zip的目录结构。各个芯片平台,都有定制过自己的update.zip,所以update.zip里的内容不是

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

一、update.zip结构简介

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

|----boot.img|----system      |----app      |----bin      |----lib      |----etc      ......|----meta-inf      |----CERT.RSA      |----CERT.SF      |----MANIFEST.MF      |----com            |----androID                  |----Metadata                  |----otacert            |----Google                  |----androID                       |----update-binary                       |----updater-script

   1>boot.img
    boot.img是更新boot分区所需要的文件,主要包括kernel+ramdisk。
   2>system目录
    system目录的内容在升级后会放在系统的system分区,主要用来更新系统的apk、so、bin等,在系统源码中对应着out/target/product/xxx/system/中的所有文件。
   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.apkcom.androID.wallpaperBasic动态墙纸
墙纸galaxy4.apkcom.androID.galaxy4galaxy4 动态墙纸
墙纸HoloSpiral.aapkcom.androID.wallpaper.holospiralHoloSpiral动态墙纸
墙纸liveWallpapersPicker.apkcom.androID.wallpaper.livepicker动态墙纸选择器
墙纸MagicSmoke.apkcom.androID.magicsmokeMagicSmoke动态墙纸
墙纸MusicVisualization.apkcom.androID.musicvisMusicVisualization动态墙纸
墙纸NoiseFIEld.apkcom.androID.noisefIEldNoiseFIEld动态墙纸
墙纸PhaseBeam.apkcom.androID.phasebeamPhaseBeam动态墙纸
屏保BasicDreams.apkcom.androID.dreams.basicBasic屏保
屏保Phototable.apkcom.androID.dreams.phototablePhototable屏保
屏保WebVIEwDream.apkcom.androID.dreams.webWebVIEw屏保
短信/彩信/电话BasicSmsReceiver.apkcom.androID.basicsmsreceiver基础短信接收
短信/彩信/电话Mms.apkcom.androID.mms彩信
短信/彩信/电话Telephony.apkcom.androID.phone电话应用
短信/彩信/电话TelephonyProvIDer.apkcom.androID.provIDers.telephony电话记录 Content ProvIDer
短信/彩信/电话VoiceDialer.apkcom.androID.voicedialer语音拨号器
短信/彩信/电话InCallUI.apkcom.androID.incallui拨号盘
短信/彩信/电话CellbroadcastReceiver.apkcom.androID.cellbroadcastreceiver小区广播
通讯录Contacts.apkcom.androID.contacts联系人
通讯录ContactsProvIDer.apkContactsProvIDer联系人 Content ProvIDer
浏览器browser.apkcom.androID.browser系统浏览器
浏览器HTMLVIEwer.apkcom.androID.HTMLvIEwer简易HTMLVIEw
计算器Calculator.apkcom.androID.calculator2计算器
日历Calendar.apkcom.androID.Calendar日历
日历CalendarProvIDer.apkcom.androID.provIDers.calendar日程表 Content ProvIDer
邮件Email.apkcom.androID.email邮件应用
邮件UnifIEdEmail.apkcom.androID.mail邮件
图库gallery2.apkcom.androID.gallery3d图库
相机/录音/视频编辑Camera.apkcom.androID.camera相机
相机/录音/视频编辑Camera2.apkcom.androID.camera2相机
相机/录音/视频编辑SpeechRecorder.apkcom.androID.speechrecorder语音录制
相机/录音/视频编辑SoundRecorder.apkcom.androID.soundRecorder音频录制
相机/录音/视频编辑VIDeoEditor.apkcom.androID.VIDeoEditor视频编辑器
桌面Launcher2.apkcom.androID.launcher原生launcher2
桌面Launcher3.apkcom.androID.launcher3原生launcher3
音乐Music.apkcom.androID.music音乐播放器
音乐MusicFX.apkcom.androID.musicfx音乐控制面板
桌面小工具DeskClock.apkcom.androID.deskclock时钟
桌面小工具Protips.apkcom.androID.protips桌面帮助提示
桌面小工具QuickSearchBox.apkcom.androID.quicksearchBox快速搜索框
其他PartnerBookmarksProvIDer.apkcom.androID.provIDers.partnerbookmarks书签Content ProvIDer
其他SpareParts.apkcom.androID.spare_parts开发样例
其他OneTimeInitializer.apkcom.androID.onetimeinitializer首次安装Google app工具
其他UserDictionaryProvIDer.apkcom.androID.provIDers.userdictionary用户词典Content ProvIDer
芯片自带应用HiVIDeoPhoneTest.apkcom.androID.vIDeophonetest视频测试工具
芯片自带应用hdcp1.4KeyLoadTool.apkcom.example.hidisplaytest接口测试工具
芯片自带应用MultiVIDeoTest.apkcom.androID.multivIDeotest多路视频测试工具
芯片自带应用HiFactoryTest.apkcom.androID.factorytest厂测工具
芯片自带应用Higallery.apkcom.hisilicon.androID.gallery3d图库
芯片自带应用ServiceSettings.apkcom.androID.smart.terminal.iptv.aIDl中间件通信
芯片自带应用HigalleryL.apkcom.androID.nativeimage.gallery4K图库
芯片自带应用PicturePlayer.apkcom.droIDlogic.PicturePlayer本地文件管理
芯片自带应用Miracast.apkcom.amlogic.miracast无线传屏
芯片自带应用NativeImagePlayer.apkcom.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

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

    1280 720 1    p 5 0 part0

   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]

    如以上属性,则系统中只需保留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

    将别的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 \
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

  不生成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
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

  其中,所涉及的文件如下:

     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:签名后的升级包

  至此,常见的机顶盒ROM体积精简方式介绍完毕。

总结

以上是内存溢出为你收集整理的Android TV ROM体积精简全部内容,希望文章能够帮你解决Android TV ROM体积精简所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1062851.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存