1. 程式人生 > >Android 4.3 系統裁剪——刪除不使用的app及增加自己app

Android 4.3 系統裁剪——刪除不使用的app及增加自己app

刪除不使用的apk

系統自帶的app位置是在/android4.3/packages/apps
下面是一些APP作用分析:

| |– BasicSmsReceiver
| |– Bluetooth (藍芽)
| |– Browser (瀏覽器)
| |– Calculator (計算器)
| |– Calendar (日曆)
| |– Camera (相機)
| |– CellBroadcastReceiver
| |– CertInstaller (在Android中安裝數字簽名,被呼叫)
| |– Contacts (撥號(呼叫)、聯絡人、通話記錄)
| |– ContactsCommon
| |– DeskClock (桌面時鐘)
| |– Dialer
| |– Email (Email)
| |– Exchange
| |– Gallery (相簿,和Camera類似,多了列表)
| |– Gallery2
| |– HTMLViewer (瀏覽器附屬介面,被瀏覽器應用呼叫,同時提供儲存記錄功能)
| |– KeyChain
| |– Launcher2 (登陸啟動項,負責應用的呼叫)
| |– LegacyCamera
| |– Mms (?彩信業務)
| |– Music (音樂播放器)
| |– MusicFX
| |– Nfc
| |– OneTimeInitializer
| |– PackageInstaller (安裝、解除安裝程式的響應)
| |– Phone (電話撥號程式)
| |– PhoneCommon
| |– Protips
| |– QuickSearchBox
| |– Settings (開機設定,包括電量、藍芽、裝置資訊、介面、wifi等)
| |– SmartCardService
| |– SoundRecorder (錄音機,可計算儲存所需空間和時間)
| |– SpeechRecorder
| |– Stk
| |– Tag
| |– VideoEditor
| |– VoiceDialer (語音識別通話)

對於不需要的app,

/out/target/product/m801/system/app刪除對應apk,
到/packages/apps找到對應原始碼,修改.mk
然後重新編譯。

下次抽時間琢磨一下:
SystemServer.java 刪除不需要的系統服務
init.rc 去除不需要依賴的程式
preload 遮蔽不需要的資源與類
google service
3d opengl、rendscript

加入自定義的apk

有原始碼的

1 從/packages/app/calendar下複製Android.mk到自己專案裡,並修改內容:

LOCAL_PACKAGE_NAME := AutoRun
AutoRun是自己的app的名字

這裡寫圖片描述

2 修改/build/target/product/generic_no_telephony.mk,加入自己apk名字:

(android2.2版本修改的是generic.mk)

把包含Android.mk的原始碼放到

android4.3/packages/apps

3 編譯

命令列到專案根目錄,執行:

source build/envsetup.sh
choosecombo(選擇預設直接回車)
make -j2

也有說直接這樣,我沒有測試:

make clean
make
編譯完成後,啟動虛擬機器:
./emulator -avd androidname -system out/target/product/generic/system.img

單個模組編譯的方法

$.build/envsetup.sh
mmm packages/apps/Contacts/ 示例編譯聯絡人
這時生成
out/target/product/generic/data/app/ContactsTests.apk
out/target/product/generic/system/app/Contacts.apk
make snod 重新生成system.img

第三方apk編譯

使用yaffs2
今天沒有時間搞了,下次再看具體做法。