【问题标题】:Unknown package name of class file类文件的未知包名
【发布时间】:2016-10-18 17:20:15
【问题描述】:

我有两个要添加到 AOSP 的库: Azure Storage & Jackson Core

当 Azure 存储依赖于 Jackson。

this instructions 之后,我将它们都添加到[MAIN_FOLDER]/external 下,并使用以下Android.mk 文件:

为了杰克逊 -

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := jackson

LOCAL_MODULE_TAGS := eng debug optional

LOCAL_SDK_VERSION := current

LOCAL_SRC_FILES := $(call all-java-files-under, src/main)

include $(BUILD_JAVA_LIBRARY)

对于 Azure 存储 -

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := azure-storage

LOCAL_JAVA_LIBRARIES := jackson

LOCAL_MODULE_TAGS := eng debug optional

LOCAL_SDK_VERSION := current

LOCAL_SRC_FILES := $(call all-java-files-under, src/main)

include $(BUILD_JAVA_LIBRARY)

当我也添加了:

PRODUCT_BOOT_JARS := \
    jackson \
    azure-storage

致我的core_minimal.mk

以下内容发送至[MAIN_FOLDER]/frameworks/base/services/core/Android.mk

LOCAL_JAVA_LIBRARIES += jackson azure-storage

唉,当我尝试make update-api && make时, 我收到以下错误:

错误:out/target/common/obj/JAVA_LIBRARIES/jackson_intermediates/classes.jar:类文件com/fasterxml/jackson/core/JsonLocation.class的未知包名

错误:out/target/common/obj/JAVA_LIBRARIES/azure-storage_intermediates/classes.jar:类文件 com/microsoft/azure/storage/CorsRule.class 的未知包名

make: *** [out/target/common/obj/PACKAGING/boot-jars-package-check_intermediates/stamp] 错误 1

make: *** 等待未完成的工作......

谢谢!

【问题讨论】:

    标签: java android android-source android.mk


    【解决方案1】:

    首先,我们最好找出这个错误的来源,使用 'grep' 我们发现它来自 Python:build/core/tasks/check_boot_jars/check_boot_jars.py

    def CheckJar(jar):
    package_name = os.path.dirname(f)
    package_name = package_name.replace('/', '.')
    # Skip class without a package name
    if package_name and not whitelist_re.match(package_name):
        print >> sys.stderr, ('Error: %s: unknown package name of class file %s' % (jar, f))
        return False
    

    显然,如果“whitelist_re”中不存在您的包名,则您遇到了错误!

    “whitelist_re”的值来自一个名为“build/core/tasks/check_boot_jars/package_whitelist.txt”的txt文件,因此解决方案是将您的包添加到此白名单文件中。 p>

    示例在 package_whitelist.txt 中列出。

    【讨论】:

      【解决方案2】:

      显然所有库都必须以com.android.开头,

      所以我添加了jarjar-rules.txt 和以下内容:

      rule com.microsoft.** com.android.@0
      rule com.fasterxml.** com.android.@0
      

      并将以下行添加到Android.mk

      LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
      

      现在,所有对com.microsoft.azure.storage.* 的引用都应更改为com.android.com.microsoft.azure.storage.*fasterxml 也是如此。

      【讨论】:

        猜你喜欢
        • 2021-07-21
        • 1970-01-01
        • 1970-01-01
        • 2018-10-12
        • 2020-03-29
        • 2022-08-18
        • 1970-01-01
        • 1970-01-01
        • 2013-04-26
        相关资源
        最近更新 更多