由於Google有明確說此文件為Confidential material,也因為如此,當使用相關技術的開發時,常常會面臨實作不出來或遇到問題,上網Google卻又找不到相關討論或解決方法。
有鑑於此,在這記錄一下解決方法供給其他OEM的開發者參考,因此就不細說其運作原理,知道的人就知道要做什麼
不過還是要感謝對岸的作者,我也是參考它的範例進行修改:https://blog.csdn.net/xct841990555/article/details/80896429

首先partner的文件會有說明該如何建置PAI,也很貼心的附上sample code讓你直接編譯參考
但奇耙的是,這個sample竟然編譯不過,而且是各式各樣的錯誤,首先遇到的錯誤是這個

[c]error: vendor/company/PAI/build_apk.mk: No such file or directory[/c]

我只好吧build_apk.mk的內容直接合併到Android.mk,但卻又出現另外新的錯誤

[c]FAILED: ninja: unknown target ‘MODULES-IN-PlayAutoInstallConfig'[/c]

直覺應該是要改成Android.bp,但卻在轉換的時候發現google提供的sample的語法很多都不能轉成bp

[c]
LOCAL_FULL_MANIFEST_FILE := $(LOCAL_PATH)/stub/AndroidManifest.xml
LOCAL_SOURCE_FILES_ALL_GENERATED := true
[/c]

所以參考了對岸作者寫的Android.mk稍作修改
Config

[c]
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)
[/c]

目錄結構如下:

轉成Android.bp

[c]
android_app {
name: "config-res",
certificate: "platform",
aaptflags: ["-x"],
sdk_version: "current",
export_package_resources: true,
}
[/c]

Stub

[c]
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)
[/c]

目錄結構如下:

轉成Android.bp

[c]
android_app {
name: "stub-res",
certificate: "platform",
aaptflags: ["-x"],
platform_apis: true,
export_package_resources: true,
}
[/c]

記得將res相關資料搬到對應的路徑

Leave a comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *