Android換膚功能設計與實現(1)

來源:互聯網
上載者:User

    MIUI系統最具特色的功能就是系統級的主題換膚,能夠更換任何可見的元素。像案頭ICON、案頭檔案夾、案頭壁紙、APP中的各種圖片資源、字型等等。如果一個ROM想像MIUI一樣,支援這種功能的話,那麼這個功能是如何?的那。從功能實現角度劃分,可以分成第三方也能換的,還有只有系統能換的。這裡主要是Android系統開放的各種服務,實現換膚的功能。比如壁紙,鈴聲這些,通過系統的相關介面,可以實現對這些功能的更換。MIUI其它的換膚功能,主要是對APP資源的更換,這個功能應該說最具特色。下面主要對這個功能的實現及主旨管理員APP的開發中遇到的問題,進行一下說明,會持續幾篇部落格。

    從理論上講,對APP更換資源(案頭也是APP),可以與特定應用定義相關介面,從而有針對性的實現對資源的更換。如案頭,現在市面上的很多案頭都支援自身的換膚功能。可以更換ICON圖庫、表徵圖背板等等。如果以這種方式實現換膚功能的話,那麼換膚模組就要與各個APP定義相關的介面,將對應的資源放於約定好的位置,通過Intent廣播方式通知各個APP,使各個APP重新載入。但這樣做勢必增加各個APP的複雜程度,同時不能更新第三方APP的資源。
如果需要做到對ROM中任何APP都可以進行換膚,那麼就需要深入到Android系統對資源的載入、與使用部分去尋找答案了。

    簡單將Android系統提取資源的相關類別關係如所示,在我們所使用的Activity的getResource調用的是Context這個虛基類的介面,而如果想對Context的具體實現有一個深入的瞭解,那麼可以去看ContextImpl。簡單介紹一下Android系統對資源的提取方式,Android中,對資源的載入,通過Context擷取Resources,最後調用的是AssetManager的openNonAsset()載入資源。Android系統通過資源ID來標識不同的資源,ID大於0x01000000為系統資源,否則為app內建資源。通過包名來確定不同的資源套件,讀取資源檔。

    Android系統中所有的資源都是以檔案夾壓縮包的形式存在的,這就是Android的APP在編譯是所做的事,我們知道在Android的APP中,所有的應用代碼被編譯為dex格式的檔案,那res資源那,其實所有的資源檔只是簡單地使用zip檔案壓縮到APK應用程式套件中。在Android手機進行安裝時,

其實過程就是 1:解壓APK應用程式套件。2.解析檔案夾下的xml檔案,向系統註冊包資訊。主要包括啟動Activity檔案名稱,應用程式套件名。3.將APK包拷貝到/data/app檔案夾,以包名命名。在/data/app下面的就是各個應用所對應的資源套件了,其實就是apk包的拷貝。在資源載入過程中,通過應用程式套件名確定資源套件的位置。直接到/data/app下面尋找相應的資源套件。提取對應的資源檔。

特殊的幾個資源套件:

1.系統資源套件,在/system/framework/framework-res

   2.系統應用資源套件,其實系統應用與普通應用一樣,都是通過包名來確定資源套件的位置的,所不同的是系統應用是在系統編譯時間直接編譯為Android.mk中指定的包名,並拷貝到/system/app下面的,不存在上面所說的安裝應用、解析的部分。其資源套件就是/system/app下面的APK本體。包名就是在編譯時間,在Android.mk中指定的名稱。

 

以上對Android系統資源載入的過程進行了簡單地描述,按著這條思路走,基本可以實現對資源選擇載入及替換了。

由於本篇涉及到比較底層的東西,部分屬於產品級核心,不能詳述請見諒,接下來的幾篇,主要會說一下主旨管理員APP的開發,會進行詳細介紹。

 

 

                             ——歡迎轉載,請註明出處

http://blog.csdn.net/zyplus——

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.