由於Google有明確說此文件為Confidential material,也因為如此,當使用相關技術的開發時,常常會面臨實作不出來或遇到問題,上網Google卻又找不到相關討論或解決方法。
有鑑於此,在這記錄一下解決方法供給其他OEM的開發者參考,因此就不細說其運作原理,知道的人就知道要做什麼
不過還是要感謝對岸的作者,我也是參考它的範例進行修改:https://blog.csdn.net/xct841990555/article/details/80896429
首先partner的文件會有說明該如何建置PAI,也很貼心的附上sample code讓你直接編譯參考
但奇耙的是,這個sample竟然編譯不過,而且是各式各樣的錯誤,首先遇到的錯誤是這個
error: vendor/company/PAI/build_apk.mk: No such file or directory
我只好吧build_apk.mk的內容直接合併到Android.mk,但卻又出現另外新的錯誤
FAILED: ninja: unknown target 'MODULES-IN-PlayAutoInstallConfig'
直覺應該是要改成Android.bp,但卻在轉換的時候發現google提供的sample的語法很多都不能轉成bp
LOCAL_FULL_MANIFEST_FILE := $(LOCAL_PATH)/stub/AndroidManifest.xml LOCAL_SOURCE_FILES_ALL_GENERATED := true
所以參考了對岸作者寫的Android.mk稍作修改
Config
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_PACKAGE_NAME := config-res LOCAL_CERTIFICATE := platform LOCAL_AAPT_FLAGS := -x LOCAL_MODULE_TAGS := optional LOCAL_EXPORT_PACKAGE_RESOURCES := true include $(BUILD_PACKAGE)
目錄結構如下:
轉成Android.bp
android_app { name: "config-res", certificate: "platform", aaptflags: ["-x"], sdk_version: "current", export_package_resources: true, }
Stub
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_PACKAGE_NAME := stub-res LOCAL_CERTIFICATE := platform LOCAL_AAPT_FLAGS := -x LOCAL_MODULE_TAGS := optional LOCAL_EXPORT_PACKAGE_RESOURCES := true include $(BUILD_PACKAGE)
目錄結構如下:
轉成Android.bp
android_app { name: "stub-res", certificate: "platform", aaptflags: ["-x"], platform_apis: true, export_package_resources: true, }
記得將res相關資料搬到對應的路徑
Place your comment