源碼下載及編譯參考文章 http://www.lxweimin.com/p/367f0886e62b
- 按以上文章下載編譯Android 源碼基本沒有問題,不過在我這里出現幾個問題,特此記錄下:
1.【 關于同步】repo sync時會報 fetches error due to some errors[具體錯誤信息記不清楚了,反正就是大概的錯誤]查過網上N多資料,可以搜一下,最后我沒有怎么改動,一直repo sync就好,直到最后成功,大概用了兩天的時間,若嫌麻煩可以自行百度,寫個自動化repo sync的腳本就行了。
2.【關于編譯】這塊兒我沒有出問題,我就不贅述了,出錯看網上大部分是由于同步有問題,所以同步在費事也要同步成功。編譯這個大概用4-6個小時。
3.【啟動模擬器】,這塊折騰了有一天,各種試,都無果,最后無奈根據http://www.tarenacn.com/azpxxy/1489474823074.html這篇文章重新編譯arm32位的吧,實則是下下策,還好正好到晚上了,我去睡覺,讓他自己編譯去吧,第二天,啟動模擬器果然好了,深層原因我就不去探究了,所以如果沒有什么特定要求lunch的時候第一個aosp-arm-eng就可以了。
4.【集成app到系統】這個說實話,也搞了一天,各種mk配置,這里主要集成已經打包好的apk
到系統:
4.1 創建demo
文件夾:將apk
文件放入,并新建Android.mk
文件,內容如下:
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := demo
LOCAL_SRC_FILES := ./demo.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := platform
LOCAL_MULTILIB := 32
LOCAL_PREBUILT_JNI_LIBS := \
./demo.so \
include $(BUILD_PREBUILT)
demo文件夾只要在source目錄中就會被掃描到,這里可以自行新建一個專用于放第三方App的文件夾
4.2 修改系統device.mk
修改
/build/target/board/${Project}/device.mk
文件(其中 ${Project} 表示工程名,如generic
)
添加要集成的模塊demo
,即PRODUCT_PACKAGES+=demo
完成以上述步驟后,執行以下命令進行
full build
全編譯,將CMNS
服務集成到系統鏡像:
$ cd source
$ source build/envsetup.sh
$ lunch
$ make -j8
由于之前已經進行過全編譯,此處一般會比較快,大概幾分鐘。
編譯完之后再out/.../system/apps/
應該會有demo文件夾,則說明集成成功。
注:
- source為系統源碼目錄
- 也可以修改
/device/[設備商/devece.mk]
,具體目錄需根據硬件廠商確定。 - 關于Android.mk ,可以查看這篇文章:
- 關于Android build 系統的相關知識,可以查看這篇文章: