星期五, 6月 08, 2012

Android sdk_addon

接到任務,說要做 sdk_addon.zip 給客戶使用,客戶有提供一些資訊,基本上就是要參考 device/sample 下的檔案來做,我把 frameworks 跟 products 都依樣建立了,這兩個資料夾下的必要檔案(frameworks/Android.mk跟products/*.ini)也都做了修改,可是怎麼試都失敗。

上網 Google 了一下,找到這篇:Android SDK Add-on Configure, Compile and Release ,一樣也是提到 device/sample ,基本上算是相當清楚,但是在我的環境下仍然失敗。

後來靜下心來看,相對照 sample 以後,發現其實 device/myproduct/Android.mk 裏面已經有去 include 其下所有 Android.mk,這點跟 device/sample/Android.mk 裏面一樣。device/sample 下沒有 AndroidProduct.mk,而是在 device/sample/products 下,裏面則是去 include device/sample/products/sample_addon.mk 。那我的 device/myproduct 下已經有 AndroidProduct.mk 而且寫了好多東西,因此,我就參考 device/sample/products/sample_addon.mk 增加了 PRODUCT_SDK_ADDON_* 相關的變數,然後把 PRODUCT_PACKAGES 從 := 改為 += 。又因為公司合作的開發SDK比較機車,有些 library 都是用複製,而非 build 的,所以再參考之前的 build script ,稍稍修改了一下,這樣就可以 build 出 SDK addon 了,產出的檔案是放在 out/host/linux-x86/sdk_addon 下。

補充:後來編譯 mydroid 時出問題了,發現要在 PRODUCT_SDK_ADDON_* 的前後加上 ifneq ($(filter sdk_addon,$(MAKECMDGOALS)),) 跟 endif 才可以避免無法編譯 mydroid 的窘境。

沒有留言: