类文件的未知包名称

shl*_*chz 2 java android android-source android.mk

我有两个库要添加到AOSP: Azure StorageJackson Core

当Azure存储依赖于杰克逊.

按照这些说明,我已经[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)
Run Code Online (Sandbox Code Playgroud)

和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)
Run Code Online (Sandbox Code Playgroud)

当我还添加:

PRODUCT_BOOT_JARS := \
    jackson \
    azure-storage
Run Code Online (Sandbox Code Playgroud)

我的core_minimal.mk.

以及以下内容[MAIN_FOLDER]/frameworks/base/services/core/Android.mk:

LOCAL_JAVA_LIBRARIES += jackson azure-storage
Run Code Online (Sandbox Code Playgroud)

唉,当我尝试时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:***等待未完成的工作....

谢谢!

小智 5

首先,我们最好找到这个错误的来源,用'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
Run Code Online (Sandbox Code Playgroud)

显然,如果您的包名称不存在于"whitelist_re"中,则表示您收到错误消息!

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

示例在package_whitelist.txt中列出.