使用 zbar.jar 构建 android 系统应用程序时使用 android.mk 运行时崩溃

runtime crash using with zbar.jar while building android system app using android.mk

Hi I am trying to build an system application in android build system which uses <zbar.jar> file" and "armeabi-v7a\libiconv.so" ,"armeabi-v7a\libzbarjni.so libs".

I get error as

09-21 21:14:32.614: E/AndroidRuntime(5217): java.lang.NoSuchFieldError: [中没有名称='data' 签名='Ljava/lang/Object;' 的字段=35=] Lnet/sourceforge/zbar/Image;

09-21 21:14:32.614:E/AndroidRuntime(5217):在 net.sourceforge.zbar.Image.init(本机方法)

09-21 21:14:32.614:E/AndroidRuntime(5217):在 net.sourceforge.zbar.Image.(未知来源)

I have added dependencies in android.mk as below:

LOCAL_STATIC_JAVA_LIBRARIES := libzbar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += libzbar:libs/zbar.jar

include $(CLEAR_VARS)
LOCAL_MODULE        := libiconv
LOCAL_MODULE_CLASS  := SHARED_LIBRARIES
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_TAGS   := optional
LOCAL_SRC_FILES     := libiconv.so
include $(BUILD_PREBUILT)

include $(CLEAR_VARS)
LOCAL_MODULE        := libzbarjni
LOCAL_MODULE_CLASS  := SHARED_LIBRARIES
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_TAGS   := optional
LOCAL_SRC_FILES     := libzbarjni.so
include $(BUILD_PREBUILT)

i have also enabled 
"proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt" line in project.properties and 
added "-keep class net.sourceforge.zbar.** { *; }" in progaurd.cfg file.

感谢任何帮助。 谢谢

尝试将 LOCAL_SRC_FILES 替换为 BUILD_MULTI_PREBUILT。

我找到了问题的答案。添加具有错误值的 LOCAL_PROGUARD_ENABLED 标志解决了我的问题。 添加这将导致不优化 jar 文件,因此将数据变量保留在 Image class 中。 我希望这对面临类似问题的人有所帮助。 谢谢

系统构建使用 proguard 文件来自:build\core\proguard.flags

如果你必须定义自定义proguard,那么在Android.mk你需要提到文件路径:LOCAL_PROGUARD_FLAG_FILES := proguard-project.txt

并且在混淆器中-project.txt :

-保持class net.sourceforge.zbar.** { *; }

这将解决你的问题..我亲自测试过:)