Android ZBar Exception только со сборкой Jenkins

У меня есть проект Android с активностью сканирования QR. Я использую для этого библиотеку ZBar: http://sourceforge.net/projects/zbar/files/AndroidSDK/

Если проект создан на ПК или Mac с exlipse, приложение работает нормально. Если он собран jenkins (тот же источник из git), приложение вылетает.

Исключение, которое я получаю:

at controller.gui.activity.QRScanActivity.onCreate(Unknown Source)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.access$600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoSuchFieldError: no field with name='peer' signature='J' in class Lnet/sourceforge/zbar/ImageScanner;
at net.sourceforge.zbar.ImageScanner.init(Native Method)
at net.sourceforge.zbar.ImageScanner.<clinit>(Unknown Source)
... 16 more

Я использовал демо-приложение для базы.

Это проблема конфигурации Jenkins?

Библиотека Zbar — это не просто файл jar, это библиотека C с jni. Итак, у меня есть файл jar и 3 папки (я думаю, для разных архитектур), и у них есть файлы libiconv.so и libzbarjni.so.


person user2313423    schedule 29.11.2013    source источник


Ответы (2)


Добавьте -keep class net.sourceforge.zbar.** { *; } в файл конфигурации proguard.

person Muzikant    schedule 20.03.2014

Я не знаю, поняли ли вы это уже, но это проблема proguard. Кажется, ваши классы JNI неправильно запутываются. Возможно, вам придется изменить конфигурацию proguard, чтобы пропускать файлы ZBar.

person jirungaray    schedule 19.12.2013