詳解android系統(tǒng)的定制
簡(jiǎn)單基礎(chǔ)的定制android系統(tǒng),使第一次開機(jī)就安裝系統(tǒng)應(yīng)用和預(yù)裝應(yīng)用,加載服務(wù)工具和其它文件,開機(jī)啟動(dòng)畫面,設(shè)置默認(rèn)輸入法、屏幕亮度等等。
如何簡(jiǎn)單的定制android系統(tǒng)?這里有兩種方法:
第一是使用蘑菇ROM助手,編輯系統(tǒng)ROM。使用方法請(qǐng)百度。
第二種是源碼中添加編譯規(guī)則。復(fù)制設(shè)備工程中的文件到編譯生成的系統(tǒng)中。
這里介紹下第二種方法,使用的是全志T3的android4.4系統(tǒng)源碼。
1.添加我們自己的編譯項(xiàng)
修改編譯文件/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、第一次啟動(dòng),復(fù)制文件與安裝應(yīng)用較慢,進(jìn)入系統(tǒng)后需等待; # 2、system文件夾用戶不可寫,故不能刪除; # 3、預(yù)裝應(yīng)用可卸載,卸載后不再出現(xiàn); # 4、如果需要再次安裝,刪除目標(biāo)板的 /data/system.notfristrun文件,然后重啟
一 安裝系統(tǒng)應(yīng)用和一般應(yīng)用
PRODUCT_COPY_FILES是拷貝文件到系統(tǒng),前面是存放路徑,后面是目標(biāo)路徑,$(call find-copy-subdir-files,***)的寫法能實(shí)現(xiàn)文件夾的拷貝。
在test文件夾下創(chuàng)建apk,systemapk,music,video,pic等文件夾。
system/preinstall是預(yù)裝軟件,放置APK文件,可卸載。
system/app是系統(tǒng)應(yīng)用,放置APK文件,不可卸載。
因?yàn)樵赿evice/softwinner/t3-p1/fstab.sun8iw11p1中/dev/block/by-name/system /system ext4 ro wait表明/system的掛載方式是ro只讀方式。ROOT就是重新掛載修改這個(gè)文件夾的讀寫權(quán)限。非ROOT情況下文件拷貝到里面就可實(shí)現(xiàn)文件不可刪除。
注意,復(fù)制文件會(huì)檢查是否是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
二 加載服務(wù)工具和其它文件
接著分析test.mk文件,下面三句是復(fù)制music、video、pic到目標(biāo)android系統(tǒng)。也可以是其他文件。實(shí)現(xiàn)文件的定制。
再下面兩句是添加的工具,其中一個(gè)設(shè)置默認(rèn)值的shell指令,一個(gè)是藍(lán)牙供應(yīng)商給的工具。
三 設(shè)置默認(rèn)輸入法
設(shè)置默認(rèn)輸入法的一個(gè)方法是開機(jī)的時(shí)候創(chuàng)建服務(wù)控制臺(tái)輸入settings指令來設(shè)置默認(rèn)輸入法。然后/android\/device/softwinner/t3-p1/init.rc文件加載時(shí)運(yùn)行一次該服務(wù)。
其中test_init里面添加設(shè)置默認(rèn)輸入法指令。
#!/system/bin/sh settings put secure default_input_method com.google.android.inputmethod.pinyin/.PinyinIME
init.rc加入服務(wù)
service test_init /system/bin/sh /system/bin/test_init class core user root group root system oneshot
google拼音輸入法app要放到預(yù)裝軟件或是系統(tǒng)應(yīng)用文件夾中。
app也裝上去了,這樣還不行,因?yàn)闄?quán)限不夠,需要修改test_init權(quán)限,在init.rc文件中添加
chmod 777 /system/bin/test_init
注意:設(shè)置默認(rèn)輸入法的另一個(gè)方法是修改默認(rèn)參數(shù)。修改/device/softwinner/t3-p1/overlay/frameworks/base/packages/SettingsProvider/res/values的defaults.xml文件,詳細(xì)請(qǐng)百度。
現(xiàn)在settings指令支持的選項(xiàng)有限,雖然查看setting的數(shù)據(jù)庫有很多選項(xiàng),但并不好用。
重點(diǎn)是,修改test_init,可以在android系統(tǒng)起來前輸入自己需要的shell指令。android系統(tǒng)添加啟動(dòng)服務(wù)會(huì)具體說明如何添加啟動(dòng)工具或服務(wù)。
四 開機(jī)啟動(dòng)畫面與音樂
全志T3的android4.4系統(tǒng)源碼開機(jī)畫面、開機(jī)音樂放在android/device/softwinner/t3-p1/media
- Android ListView的Item點(diǎn)擊效果的定制
- Android快速開發(fā)之定制BaseTemplate
- Android實(shí)現(xiàn)定制返回按鈕動(dòng)畫效果的方法
- Android定制自己的EditText輕松改變底線顏色
- Android 組件樣式定制方法詳解
- Android實(shí)現(xiàn)定制桌面的方法
- android源碼探索之定制android關(guān)機(jī)界面的方法
- Android實(shí)現(xiàn)的狀態(tài)欄定制和修改方法
- Android 如何定制vibrator的各種震動(dòng)模式M 具體方法
- Android定制RadioButton樣式三種實(shí)現(xiàn)方法
相關(guān)文章
Android中利用zxing實(shí)現(xiàn)自己的二維碼掃描識(shí)別詳解
這篇文章主要給大家介紹了關(guān)于Android中利用zxing實(shí)現(xiàn)自己的二維碼掃描識(shí)別的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用zxing具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-09-09Android ExpandableListView實(shí)現(xiàn)下拉刷新和加載更多效果
這篇文章主要為大家詳細(xì)介紹了Android ExpandableListView實(shí)現(xiàn)下拉刷新和加載更多效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06Android中實(shí)現(xiàn)EditText圓角的方法
Android中實(shí)現(xiàn)EditText圓角的方法,需要的朋友可以參考一下2013-03-03利用Jetpack Compose實(shí)現(xiàn)經(jīng)典俄羅斯方塊游戲
你的童年是否有俄羅斯方塊呢,本文就來介紹如何通過Jetpack Compose實(shí)現(xiàn)一個(gè)俄羅斯方塊!感興趣的小伙伴快跟隨小編一起動(dòng)手嘗試一下吧2022-05-05Flutter TV Android端開發(fā)技巧詳細(xì)教程
這篇文章主要為大家介紹了Flutter TV Android端開發(fā)技巧詳細(xì)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Android實(shí)現(xiàn)兩個(gè)ScrollView互相聯(lián)動(dòng)的同步滾動(dòng)效果代碼
這篇文章主要介紹了Android實(shí)現(xiàn)兩個(gè)ScrollView互相聯(lián)動(dòng)的同步滾動(dòng)效果代碼,涉及Android操作ScrollView實(shí)現(xiàn)聯(lián)動(dòng)功能的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10Android巧用ActionBar實(shí)現(xiàn)下拉式導(dǎo)航
這篇文章主要為大家詳細(xì)介紹了Android巧用ActionBar實(shí)現(xiàn)下拉式導(dǎo)航的相關(guān)資料,具有一定的實(shí)用性和參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05Android實(shí)現(xiàn)View滑動(dòng)效果的6種方法
這篇文章主要介紹了Android實(shí)現(xiàn)View滑動(dòng)的6種方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03Android ConstraintLayout約束布局使用詳解
ConstraintLayout 即約束布局,也是 Android Studio 的默認(rèn)布局,它可以減少布局的層級(jí),改善布局性能。不夸張地說,它基本上可以實(shí)現(xiàn)任何你想要的布局效果,下面,咱們一起來瞧瞧吧2022-11-11