使用 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.** { *; }
这将解决你的问题..我亲自测试过:)
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.** { *; }
这将解决你的问题..我亲自测试过:)