动态地将目录内的所有apk添加到AOSP系统映像

时间:2017-08-02 18:00:11

标签: android makefile gnu-make android-source

我在添加一组预建的apk到我自定义的AOSP版本时遇到了问题。我想要完成的是允许这些应用程序的开发人员将它们简单地放在源代码管理下的目录中,并且映像的下一个CI构建将只包含这些应用程序。我已经尝试使用下面的代码在included_apks目录中添加所有apks,但它没有按预期工作。

define add_included_apks

    include $(CLEAR_VARS)

    LOCAL_MODULE := $(1:included_apks/%.apk=%)
    LOCAL_MODULE_TAGS := eng userdebug
    LOCAL_MODULE_CLASS := APPS
    LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
    LOCAL_SRC_FILES := $1
    LOCAL_CERTIFICATE := PRESIGNED

    include $(BUILD_PREBUILT)
endef

APKS := $(call find-subdir-subdir-files, included_apks, '*.apk')
$(foreach item, $(APKS), $(eval $(call add_included_apks, $(item))))

这种方法的问题似乎在add_included_apks函数内部及其评估方式。当我打印出$(1:included_apks/%.apk=%)时,它是正确的值,但是如果我打印出LOCAL_MODULE它就是在此循环之前设置的最后一个值,即使我正在调用{\ n} {1}}。最后,模块不包含在系统映像中。我是否误解了include $(CLEAR_VARS)调用在make文件中的工作原理?

编辑答案是正确的,但真正的AOSP错误是:

foreach应该LOCAL_MODULE_TAGS := eng userdebug包含在userdebug构建变​​体中。 make语法对于我试图做的事情是正确的。

2 个答案:

答案 0 :(得分:2)

如果你想要在一个定义中打印,你必须用另一个$来逃避$。

define add_included_apks

    include $(CLEAR_VARS)

    LOCAL_MODULE := $(1:included_apks/%.apk=%)
    $$(error $$(LOCAL_MODULE))
    LOCAL_MODULE_TAGS := eng userdebug
    LOCAL_MODULE_CLASS := APPS
    LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
    LOCAL_SRC_FILES := $1
    LOCAL_CERTIFICATE := PRESIGNED

    include $(BUILD_PREBUILT)
endef

答案 1 :(得分:0)

data.dates <- list(read.table(text = "Linha DSaida HSaida DChegada HChegada Sentido Catraca Embarcado 3 2016-01-01 04:05 2016-01-01 04:15 0 0 0 3 2016-01-01 04:23 2016-01-01 23:57 0 37 0 3 2016-01-01 04:05 2016-01-01 04:15 0 0 0 3 2016-01-01 04:22 2016-01-01 23:58 0 83 0 3 2016-01-01 04:04 2016-01-01 04:15 0 0 0 3 2016-01-01 04:23 2016-01-01 23:58 0 43 0 6 2016-01-01 03:49 2016-01-01 13:41 0 82 0 6 2016-01-01 13:43 2016-01-01 23:09 0 98 0 7 2016-01-01 03:54 2016-01-01 14:49 0 61 0 7 2016-01-01 14:51 2016-01-01 23:10 0 46 0", header = T)) 不会在用户构建中包含此项,而是包含eng和userdebug。如果您希望将其包含在用户构建中。它必须是'LOCAL_MODULE_TAGS := eng debug',您的'optional'必须将这些添加到:

device/.../BoardConfig.mk