2

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

Azure 存储依赖于 Jackson 时。

按照此说明,我已将它们都添加[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: *** 等待未完成的工作....

谢谢!

4

2 回答 2

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

显然,如果您的包名在“whitelist_re”中不存在,您就会收到错误消息!

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

示例在 package_whitelist.txt 中列出。

于 2017-08-13T01:37:49.237 回答
-1

显然所有的图书馆都必须以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

于 2016-10-18T23:40:40.987 回答