你好!這裏是風箏的博客,
歡迎和我一起交流。
經過前面幾篇博客的編譯步驟,成功的編出了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