1. 程式人生 > >android系統的簡單定製

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