android系統的簡單定製
簡單基礎的定製android系統,使第一次開機就安裝系統應用和預裝應用,載入服務工具和其它檔案,開機啟動畫面,設定預設輸入法、螢幕亮度等等。
如何簡單的定製android系統?這裡有兩種方法:
第一是使用蘑菇ROM助手,編輯系統ROM。使用方法請百度。
第二種是原始碼中新增編譯規則。複製裝置工程中的檔案到編譯生成的系統中。
這裡介紹下第二種方法,使用的是全志T3的android4.4系統原始碼。
1.新增我們自己的編譯項
修改編譯檔案/android/device/softwinner/t3-p1/t3_p1.mk,新增下面一句
$(call inherit-product-if-exists, device/softwinner/t3-p1/test/test.mk)
2.編輯device/softwinner/t3-p1/test/test.mk檔案。
PRODUCT_COPY_FILES += \ $(call find-copy-subdir-files,*,$(LOCAL_PATH)/apk,system/preinstall) \ $(call find-copy-subdir-files,*,$(LOCAL_PATH)/systemapk,system/app) \ $(call find-copy-subdir-files,*,$(LOCAL_PATH)/music,data/test/music) \ $(call find-copy-subdir-files,*,$(LOCAL_PATH)/video,data/test/video) \ $(call find-copy-subdir-files,*,$(LOCAL_PATH)/pic,data/test/pic) PRODUCT_COPY_FILES += \ device/softwinner/t3-p1/test/test_init:system/bin/test_init \ device/softwinner/t3-p1/test/gocsdk:system/bin/gocsdk #注意:1、第一次啟動,複製檔案與安裝應用較慢,進入系統後需等待; # 2、system資料夾使用者不可寫,故不能刪除; # 3、預裝應用可解除安裝,解除安裝後不再出現; # 4、如果需要再次安裝,刪除目標板的 /data/system.notfristrun檔案,然後重啟。
一安裝系統應用和一般應用
PRODUCT_COPY_FILES是拷貝檔案到系統,前面是存放路徑,後面是目標路徑,$(call find-copy-subdir-files,***)的寫法能實現資料夾的拷貝。
在test資料夾下建立apk,systemapk,music,video,pic等資料夾。
system/preinstall是預裝軟體,放置APK檔案,可解除安裝。
system/app是系統應用,放置APK檔案,不可解除安裝。
因為在device/softwinner/t3-p1/fstab.sun8iw11p1中/dev/block/by-name/system /system ext4 ro wait表明/system的掛載方式是ro只讀方式。ROOT就是重新掛載修改這個資料夾的讀寫許可權。非ROOT情況下檔案拷貝到裡面就可實現檔案不可刪除。
注意,複製檔案會檢查是否是APK檔案,需要在android/build/core/makefile裡面註釋掉這段檢查。
#define check-product-copy-files
#$(if $(filter %.apk, $(1)),$(error \
# Prebuilt apk found in PRODUCT_COPY_FILES: $(1), use BUILD_PREBUILT instead!))
#endef
二 載入服務工具和其它檔案
接著分析test.mk檔案,下面三句是複製music、video、pic到目標android系統。也可以是其他檔案。實現檔案的定製。
再下面兩句是新增的工具,其中一個設定預設值的shell指令,一個是藍芽供應商給的工具。
三 設定預設輸入法
設定預設輸入法的一個方法是開機的時候建立服務控制檯輸入settings指令來設定預設輸入法。然後/android\/device/softwinner/t3-p1/init.rc檔案載入時執行一次該服務。
其中test_init裡面新增設定預設輸入法指令。
#!/system/bin/sh
settings put secure default_input_method com.google.android.inputmethod.pinyin/.PinyinIME
init.rc加入服務
service test_init /system/bin/sh /system/bin/test_init
class core
user root
group root system
oneshot
google拼音輸入法app要放到預裝軟體或是系統應用資料夾中。
app也裝上去了,這樣還不行,因為許可權不夠,需要修改test_init許可權,在init.rc檔案中新增
chmod 777 /system/bin/test_init
注意:設定預設輸入法的另一個方法是修改預設引數。修改/device/softwinner/t3-p1/overlay/frameworks/base/packages/SettingsProvider/res/values的defaults.xml檔案,詳細請百度。
現在settings指令支援的選項有限,雖然檢視setting的資料庫有很多選項,但並不好用。
重點是,修改test_init,可以在android系統起來前輸入自己需要的shell指令。android系統新增啟動服務會具體說明如何新增啟動工具或服務。
四 開機啟動畫面與音樂
全志T3的android4.4系統原始碼開機畫面、開機音樂放在android/device/softwinner/t3-p1/media