我正在尝试将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文件的内容:
SOURCE 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)
源代码来自于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)
我还在Android.mk
文件的LOCAL_JAVA_LIBRARIES :=
部分中添加了一个jackson
条目,以便在使用Jackson(frameworks/base/services
)时使用。无论我尝试什么,我都会得到一个ClassNotFoundException
。
我错过了什么?我做了不必要的事情吗?