一起來學嵌入式Android系統 (第四章心得二)

在O’REILLY"嵌入式Android系統"這本書的第四章建置系統中剩餘內容於本文心得分享,下一篇文章就會開始說明第六章的內容;本次大綱如下:

◎    建置配方

◎    基本的AOSP破解

首先要說明,我們使用的是開發板廠商提供的Android Source Code來進行實作,SoC廠商也提供客制化文件https://mega.co.nz/#!H9pRTJ4L!I5zFDiTVRALnsIDSO2zMem1fJUJ5z5FtGrl7zQBcEw0 (本公司不做任何保證),可以快速的客制化開發板上的Android作業系統,本篇心得分享於某些課題也會用到其中的一些內容。但相關技術還是要詳讀書中的內容才能深入瞭解,才不致於受制於SoC廠商,這也是本系列文章心得分享的主要原因。

在建置配方的部份;我們不會用到預設的droid建置,所以這部份跳過。檢視建置命令的部份,就是在編譯時添加showcommands到命令列(如:make -j4 showcommands)把編譯過程所有資訊顯示出來。在建置SDK、CTS與NDK上就請先瞭解其操作方式,當我們修改到Framework並產生出新的API時才會用到;但實務上一般在APP開發者都是使用Android標準SDK來開發您提供裝置的軟體;若有一天你想加入新的API而不一定考慮相容性的問題,這幾個課題再回來詳細瞭解,於書中的附錄B的案例就需要做自行建置SDK的工作;而CTS一般都不用自行建立,因為要通過Google的認證都是用其官方網站的CTS來進行驗證(https://source.android.com/compatibility/downloads.html),關於CTS的進一步內容,我們會在部落格的其它文章中再多做說明。更新API的動作也是瞭解就好,除非要產生出不相容的API出來,那也無法使用標準SDK來開發APP,實務上遇到的機會不高。建置單一模組的方法也要瞭解一下,在開發板Android Source Code下可以嘗試make TvdLauncher,因為已用TvdLauncher取代Launcher2;而實際上會用mmmmm命令的比例更高,我一般要編譯Android的單一模組都是到其原始碼下執行mm進行編譯。最後版本樹之外的建置與在版本樹中進行遞迴式建置的課題不會太常用到,瞭解書中所說的方式並當成備案參考就好。

在基本AOSP破解的部份,會有實作方面的議題。於添加裝置的課題上,在Android上一般說法就是製作Product Tree;在本文開頭提到的文件中的"7 如何添加新的product"就是在說明這個部份;另外於線上課程http://www.mokoversity.com/course/android/android-porting-overview上的1.4 製作 Android Product Tree也有相關的介紹。在這邊我們就參考"7 如何添加新的product"的內容來建立新的Product,首先我們將device/softwinner/sugar-cubietruck整個目錄複製為device/softwinner/sugar-ct目錄,並將所有device/softwinner/sugar-ct目錄中檔案內容的sugar-cubietruck取代為sugar-ct,sugar_cubietruck取代為sugar_ct,並將檔名sugar_cubietruck.mk改為sugar_ct.mk;修改後目錄於下:

4-2-1

另外要增加硬體相關的設定,把ct-droid1/lichee/tools/pack/chips/sun7i/configs/android/sugar-cubietruck目錄完全複製成為ct-droid1/lichee/tools/pack/chips/sun7i/configs/android/sugar-ct目錄就可以了,結果如下所示:

4-2-2

完成設置後,到ct-droid1/android42目錄下,用lunch命令看一下項目是否增加:

4-2-3

編譯方法就參考第三章說明,只是lunch 16改為lunch 15;而在書上有說明每個檔案的意義,於此就不再贅述,或是參考本文開頭提到的文件中的" 1 添加定制的方案板编译打包环境"說明。而後面幾個議題請先詳細瞭解書上的描述;我們會針對目前開發板Android Source Code中已有的部份做個介紹,若需要時參考其方式來進行即可。先來看增加App的議題,device/softwinner/common/packages/TvdFileManager目錄就是SoC廠商加入的檔案管理員程式,原生的AOSP是沒有這個部份;然後看一下device/softwinner/wing-common目錄下的ProductCommon.mk以瞭解怎樣把它加進PRODUCT_PACKAGES:

4-2-4

在添加App覆蓋的部份就直接參考我們剛剛新建Product Tree的device/softwinner/sugar-ct/overlay目錄內容;這邊要強調的是,覆蓋僅可應用於資源。最後在添加原生工具或背景處理程序與添加原生程式庫的部份,請參考external目錄的各模組內容,當然新加入的模組也要將其增加至PRODUCT_PACKAGES,相關檔案才會出現在最終的Image裏,在這邊指的就是修改ProductCommon.mk檔案內容;參考範例於下:

4-2-5

上述議題也可參閱線上課程http://www.mokoversity.com/course/android/android-porting-build之說明來進一步瞭解相關內容。

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s