在目前的机顶盒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.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 | 图片播放器 |
该目录存放的是系统会使用到的脚本文件,该目录精简效果有限,主要的精简思路如下:
1>检查是否有bin文件重复情况
如xiriservice_All和xiriservice_tv,保留使用的bin文件即可。
2>检查是否预置无效bin文件情况。
比如未适配MediaAnalytics.apk时,就不用预置sqmloader、sqmpro.md5和sqm_setup.sh文件。
该目录存放的是系统自动编译出来的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体积精简所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)