1. 程式人生 > >android系統映象裁剪定製---實戰篇

android系統映象裁剪定製---實戰篇

android系統裁剪優化一直是各個廠商定製產品的關鍵步驟,包括淺層次的去除不必要的apk(android apk裁剪定製 )和深層次的裁剪整個編譯系統和框架層.   android作為開源系統,各個產品同質化嚴重,只有深層次的裁剪定製自己的系統,才能充分體現各自產品的特性,也是優化各自產品的關鍵步驟,此篇文章主要關注編譯系統和框架層的裁剪,拋磚引玉, 還有很多地方可以改進的地方,基於工作中時間限制,沒有徹徹底底的進行,此處只是工作的實戰篇,請拍磚引論,apk裁剪請看之前的單獨文章(android apk裁剪定製 ).

思路:
    android系統大而繁雜,對於不太熟悉android真個框架的朋友可以從真個思路入手:
        1:   給予原生的程式碼映象,adb shell進入單板, 主要是檢視/system資料夾的內容,從這個資料夾入手,裁剪不必要的服務,庫檔案,apk,等等.
        2:  瞭解真個編譯系統,從編譯過程入手,看隱含的可裁剪項,過程和思路很重要
具體裁剪內容:
        1: build/target/product是編譯產品關鍵的mk檔案存放處,此處可以更加各個mk檔案編譯內容進行裁剪
        base.mk檔案:去除不必要的lib庫檔案和bin檔案
        core_minimal.mk:  dmtracedump, Shell, HTMLViewer, screencap等工具和apk等
        core.mk:   libnfc_ndef, mms-common  nfc功能庫檔案和mms簡訊功能等
        embedded.mk:    dumpstate, dumpsys
        emulator.mk:     camera.goldfish , camera.goldfish.jpeg , lights.goldfish , gps.goldfish等
        full_base.mk:   去除不需要的庫和apk
        full_base_telephony.mk: 去除apk和電話功能
        generic_no_telephony.mk:去除apk和不必要的庫
        languages_full.mk,locales_full.mk: 去除不需要的語言設定(可以去除res包的大小)
        2:
            external/icu4c/stubdata/icu-data-default.txt: 修改此檔案,去除編譯出的icu.dat檔案大小,去除不需要的語言,重新用指令碼生成想要的dat檔案即可
            external/skia/Android.mk: 去除其中test的編譯
        3:
            frameworks/base/data/etc/platform.xml: 去除不需要的屬性
            frameworks/base/data/fonts/Android.mk: 去除不需要的字型
            frameworks/base/data/fonts/fallback_fonts.xml: 去除不需要的字型
            frameworks/base/data/fonts/fonts.mk: 去除不需要的字型
        4:
            frameworks/base/data/sounds/AllAudio.mk: 去除不需要的聲音檔案(除了ui的保留,其他都可以去除)
            frameworks/base/data/videos/VideoPackage1.mk: 去除不需要的視訊檔案
            frameworks/native/data/etc/handheld_core_hardware.xml: 去除不需要的屬性
            frameworks/native/data/etc/tablet_core_hardware.xml:  去除不需要的屬性
            frameworks/base/preloaded-classes: 裁剪不必要的資源載入
        5:
            init.rc: 裁剪不需要的本地服務
            system.prop: 裁剪不必要的屬性內容

以上這些內容可以使得映象大大的減少,包括參加apk內容,根據實踐,映象減少100M,當然還有可以裁剪的地方,請廣大同胞搞點玉出來,我也好學習學習