我正在尝试将 Jackson JSON 库添加到我的 AOSP 项目中。我可以编译我的项目并将其刷新到手机,但出现运行时错误:
E/JavaBinder( 1689): java.lang.NoClassDefFoundError: Failed resolution of: Lcom/fasterxml/jackson/core/JsonFactory;
...
E/JavaBinder( 1689): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.fasterxml.jackson.core.JsonFactory" on path: DexPathList[[zip file "/system/framework/guice.jar", zip file "/system/framework/beanshell.jar", zip file "/system/framework/services.jar", zip file "/system/framework/ethernet-service.jar", zip file "/system/framework/wifi-service.jar"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
我尝试过从源代码和 jar 中包含 Jackson。以下是我的 Android.mk 文件:
来源 Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under,.)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE:= com.fasterxml.jackson.core
include $(BUILD_JAVA_LIBRARY)
# Copy XML to /system/etc/permissions/
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := com.fasterxml.jackson.core.xml
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)
SOURCE com.fasterxml.jackson.core.xml
(上面提到过)
<?xml version="1.0" encoding="utf-8"?>
<permissions>
<library name="com.fasterxml.jackson.core.xml"
file="/system/framework/com.fasterxml.jackson.jar" />
</permissions>
JAR Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := jackson
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := jackson-core-2.5.0.jar
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
include $(BUILD_PREBUILT)
我还添加了一个jackson
条目为 inLOCAL_JAVA_LIBRARIES :=
Android.mk 文件中我想使用 Jackson 的部分(frameworks/base/services
)。无论我尝试过什么,我都会得到一个ClassNotFoundException
.
我缺少什么?我做了什么不必要的事吗?