Android系統學習(六)------裁剪Android系統

你好!這裏是風箏的博客,

歡迎和我一起交流。


經過前面幾篇博客的編譯步驟,成功的編出了Android系統,但是發現編出來的system.img有點大了,有差不多1.7G,怎麼對它進行裁剪,縮小system.img體積呢?

從網上找了文章,手段大體如下:

  • 1.Android應用裁剪
    也就是刪除預裝的APP軟件,我的是Android N,在packages/apps/目錄下有這麼寫APP:
fengzheng@ubuntu:/work/nanopc-t4-nougat$ ls packages/apps/
BasicSmsReceiver  CellBroadcastReceiver  EmergencyInfo    LegacyCamera         Phone                 SoundRecorder   TV
Bluetooth         CertInstaller          ExactCalculator  ManagedProvisioning  PhoneCommon           SpareParts      TvSettings
Browser           Contacts               Gallery          Messaging            Protips               SpeechRecorder  UnifiedEmail
Browser2          ContactsCommon         Gallery2         Music                Provision             Stk             WallpaperPicker
Calculator        DeskClock              HTMLViewer       MusicFX              QuickSearchBox        StorageManager
Calendar          DevCamera              KeyChain         Nfc                  RetailDemo            Tag
Camera2           Dialer                 Launcher2        OneTimeInitializer   SafetyRegulatoryInfo  Terminal
CarrierConfig     Email                  Launcher3        PackageInstaller     Settings              Test

這裏面每個APP的用途基本都可以從其名字可以看出,或者直接網上搜也可以搜得到:

packages 目錄
|-- apps (應用程序庫)
| |-- AlarmClock (鬧鐘)
| |-- Bluetooth (藍牙)
| |-- Browser (瀏覽器)
| |-- Calculator (計算器)
| |-- Calendar (日曆)
| |-- Camera (相機)
| |-- CertInstaller (在Android中安裝數字簽名,被調用)
| |-- Contacts (撥號(調用)、聯繫人、通話記錄)
| |-- DeskClock (桌面時鐘)
| |-- Email (Email)
| |-- Gallery (相冊,和Camera類似,多了列表)
| |-- Gallery3D (3D相冊)
| |-- GlobalSearch (爲google搜索服務,提供底層應用)
| |-- GoogleSearch (google搜索)
| |-- HTMLViewer (瀏覽器附屬界面,被瀏覽器應用調用,同時提供存儲記錄功能)
| |-- IM (即時通訊,爲手機提供信號發送、接收、通信的服務)
| |-- Launcher (登陸啓動項,顯示圖片框架等等圖形界面)
| |-- Launcher2 (登陸啓動項,負責應用的調用)
| |-- Messaging (短信)
| |-- Music (音樂播放器)
| |-- PackageInstaller (安裝、卸載程序的響應)
| |-- Phone (電話撥號程序)
| |-- Provision (預設應用的狀態,使能應用)
| |-- Settings (開機設定,包括電量、藍牙、設備信息、界面、wifi等)
| |-- SoundRecorder (錄音機,可計算存儲所需空間和時間)
| |-- Stk (接收和發送短信)

這些可以按需刪除,比如我不需要打電話、發短信、相機等功能,最後只保留如下:

fengzheng@ubuntu:/work/nanopc-t4-nougat$ ls packages/apps/
BasicSmsReceiver  Launcher2            MusicFX             Protips               Settings        StorageManager  WallpaperPicker
CarrierConfig     Launcher3            OneTimeInitializer  Provision             SoundRecorder   Tag
EmergencyInfo     ManagedProvisioning  PackageInstaller    QuickSearchBox        SpareParts      Terminal
KeyChain          Music                PhoneCommon         SafetyRegulatoryInfo  SpeechRecorder  Test

除了packages/apps/目錄下有APP,一些廠商也會預裝自己的APP,其在vendor/目錄下。
例如我的設備是rockchip廠商的產品,rk家的APP在vendor/rockchip/common/apps/目錄:

fengzheng@ubuntu:/work/nanopc-t4-nougat$ ls vendor/rockchip/common/apps/
AllApp                ituxd        projectX          RkApkinstaller    RKGameControlSettingV1.0.1  RkVideoPlayer      RockVRHome
apps.mk               itvlauncher  RFTest            RkBoxVideoPlayer  RKMC                        RKVRExplorer       Settings2
ChangeLedStatus       Lightning    Rk3grExplorer     RKDeviceTest      RkMusic                     RKVRGlobalActions  SimpleLauncher
DeviceTest            MediaCenter  Rk3grVideoPlayer  RkEbookReader     RKTvLauncher                RKVRPanorama       StressTest
eHomeMediaCenter_box  MediaFloat   Rk4kVideoPlayer   RkExpe            RKUpdateService             RKVRPlayer         WifiDisplay
GoogleEmail           PinyinIME    RkAlarmHelper     RkExplorer        RkUserExperienceService     RKVRSettings       WinStartService

同樣的,也是按需刪除,最後我保留如下:

fengzheng@ubuntu:/work/nanopc-t4-nougat$ ls vendor/rockchip/common/apps/
AllApp      eHomeMediaCenter_box  PinyinIME      Rk3grVideoPlayer  RKDeviceTest  RKUpdateService          RKVRExplorer  SimpleLauncher
apps.mk     MediaCenter           projectX       RkApkinstaller    RKMC          RkUserExperienceService  RockVRHome    WifiDisplay
DeviceTest  MediaFloat            Rk3grExplorer  RkBoxVideoPlayer  RkMusic       RkVideoPlayer            Settings2     WinStartService

最後!還有一個地方有APP,真滴是多。。。。
在vendor/google/gapps/目錄下,有一些Google服務和APP,我不需要,直接把整個google目錄刪除了:

rm vendor/google

其實packages/目錄下還有一些其他APP,如packages/sreensavers、packages/wallpapers/目錄等,懶得刪了,先留着。

這時候make snod出來的system.img還是有1.5G,成功減少了100M大小。

  • 2.Android服務裁剪。

技術有限,這部分還在摸索中,到時更新。。。。。。

參考:Android 高通8909 系統之路之 裁剪系統 一
Android源碼裏packages裏面的結構~~~

添加/刪除 Android裏app源碼:
android系統源碼中添加app源碼(源碼部署移植)


後記:
sudo vi device/rockchip/rk3399/nanopc-t4/system.prop
ro.sf.hwrotation=0

  修改默認字體大小:
vi packages/apps/Settings/res/values/arrays.xml
在裏面找到entryvalues_font_size數組:

    <string-array name="entryvalues_font_size" translatable="false">
        <item>0.85</item>
        <item>1.0</item>
        <item>1.15</item>
        <item>1.30</item>
    </string-array>

這個文件裏面有好多東西,還有比如鎖屏時間什麼的,一大堆,我們這裏只關心字體大小,對應4個數值,算是:“小”、“普通”、“大”、“超大”。記住這些數值。

sudo vi frameworks/base/core/java/android/content/res/Configuration.java
找到setToDefaults方法:

/**
     * Set this object to the system defaults.
     */
    public void setToDefaults() {
        fontScale = 1;
        mcc = mnc = 0;
        mLocaleList = LocaleList.getEmptyLocaleList();
        locale = null;
        userSetLocale = false;

把fontScale 改成你要的對應字體的數值即可。如:

 fontScale = 1.3f;

參考:https://blog.csdn.net/wzh048503/article/details/79026231

https://blog.csdn.net/pwl999/article/details/80514271

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章