韌館-LearnHouse

[Android]Play Auto Installs (PAI),編譯失敗FAILED: ninja: unknown target 'MODULES-IN-PlayAutoInstallConfig'

由於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相關資料搬到對應的路徑

2022年1 月 posted by admin in 程式&軟體 and have No Comments

Place your comment

Please fill your data and comment below.
名稱:
信箱:
網站:
您的評論: