美文网首页
error: RkExplorer: Must specify

error: RkExplorer: Must specify

作者: 超__越 | 来源:发表于2020-01-07 18:04 被阅读0次

背景一、

    今天编译android 9.0 的apk 出现 

[1039/1081] including vendor/rockchip/common/apps/RkExplorer/Android.mk ...

vendor/rockchip/common/apps/RkExplorer/Android.mk: error: RkExplorer: Must specify LOCAL_SDK_VERSION or LOCAL_PRIVATE_PLATFORM_APIS,

build/make/core/sdk_check.mk:21: error: done.

二、分析过程

查下了这两个属性, Must specify LOCAL_SDK_VERSION or LOCAL_PRIVATE_PLATFORM_APIS,

发现android 9.0 会在这个目录下去check 

build/make/core/sdk_check.mk

# Enforcement checks that LOCAL_SDK_VERSION and LOCAL_PRIVATE_PLATFORM_APIS are

# set correctly.

# Should be included by java targets that allow specifying LOCAL_SDK_VERSION.

# The JAVA_SDK_ENFORCEMENT_WARNING and JAVA_SDK_ENFORCEMENT_ERROR variables may

# be set to a particular module class to enable warnings and errors for that

# subtype.

whitelisted_modules := framework-res__auto_generated_rro

ifeq (,$(JAVA_SDK_ENFORCEMENT_ERROR))

  JAVA_SDK_ENFORCEMENT_ERROR := APPS

endif

ifeq ($(LOCAL_SDK_VERSION)$(LOCAL_PRIVATE_PLATFORM_APIS),)

  ifeq (,$(filter $(LOCAL_MODULE),$(whitelisted_modules)))

    ifneq ($(JAVA_SDK_ENFORCEMENT_WARNING)$(JAVA_SDK_ENFORCEMENT_ERROR),)

      my_message := Must specify LOCAL_SDK_VERSION or LOCAL_PRIVATE_PLATFORM_APIS,

      ifeq ($(LOCAL_MODULE_CLASS),$(JAVA_SDK_ENFORCEMENT_ERROR))

        $(call pretty-error,$(my_message))

      endif

      ifeq ($(LOCAL_MODULE_CLASS),$(JAVA_SDK_ENFORCEMENT_WARNING))

        $(call pretty-warning,$(my_message))

      endif

      my_message :=

    endif

  endif

else ifneq ($(LOCAL_SDK_VERSION),)

  ifneq ($(LOCAL_PRIVATE_PLATFORM_APIS),)

    my_message := Specifies both LOCAL_SDK_VERSION ($(LOCAL_SDK_VERSION)) and

    my_message += LOCAL_PRIVATE_PLATFORM_APIS ($(LOCAL_PRIVATE_PLATFORM_APIS))

    my_message += but should specify only one

    $(call pretty-error,$(my_message))

    my_message :=

  endif

endif

需要在android.mk 中添加这两个变量中的一个

LOCAL_SDK_VERSION 和 LOCAL_PRIVATE_PLATFORM_APIS。

如果这两个变量没有定义,那么编译的时候就会报错:

三、

注意:

这两个变量必须定义其中一个

除非该LOCAL_MODULE 在白名单中(一般不会去修改源生的 mk)

这两个变量只能定义一个,不能同时定义

对于变量LOCAL_SDK_VERSION 之前一直会使用,标记SDK 的version 状态,值为current system_current test_current core_current 其中一个。

对于使用系统@hide api的,我们默认可以设置 LOCAL_PRIVATE_PLATFORM_APIS 为true即可。

四、对于我们的报错

可以修改这个值

LOCAL_PRIVATE_PLATFORM_APIS := current

五、搞定。

相关文章

网友评论

      本文标题:error: RkExplorer: Must specify

      本文链接:https://www.haomeiwen.com/subject/ndkdactx.html