2015-06-17 2 views
4

У меня есть проект градиента, который использует библиотеку j2v8_android 2.2.1 (которая предоставляет привязки Java для V8 JS engine - android port). К сожалению, после выполнения проекта (сборка выполнена без проблем), я получаю исключение, связанное с отсутствующим файлом библиотеки j2v8_android_x86. Проблемы возникает при попытке создать V8 выполнения:Не удалось загрузить (найти) библиотеку j2v8_android_x86

V8 runtime = V8.createV8Runtime(); 

Само исключение является:

Caused by: java.lang.IllegalStateException: J2V8 native library not loaded. 
     at com.eclipsesource.v8.V8.checkNativeLibraryLoaded(V8.java:86) 
     at com.eclipsesource.v8.V8.createV8Runtime(V8.java:74) 
     at com.eclipsesource.v8.V8.createV8Runtime(V8.java:63) 
     (...) 
Caused by: java.lang.UnsatisfiedLinkError: Could not load J2V8 library. Reasons: 
Couldn't load j2v8_android_x86 from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.androidscripting.app-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.androidscripting.app-1, /vendor/lib, /system/lib, /system/lib/arm]]]: findLibrary returned null 
     at com.eclipsesource.v8.LibraryLoader.loadLibrary(LibraryLoader.java:71) 
     at com.eclipsesource.v8.V8.load(V8.java:49) 
     at com.eclipsesource.v8.V8.createV8Runtime(V8.java:72) 
     ... 17 more 

Когда я Исследуем apk я вижу две библиотечные файлы в корне apk (libj2v8_android_armv7l.so и libj2v8_android_x86.so). Если я правильно понимаю, имена и расположение этих файлов верны, и они должны быть разрешены.

Приложение компилируется и упакован Gradle 2.2.1 (на Oracle JVM 1.8.0_45) с Android SDK 19 совместимости (с поддержкой уровня языка 1.7) и выполняется на Hudl2 работает Android 4.4.2.

+0

Не уверен, что это будет иметь значение, но вы пытались скомпилировать под Java 7? – DeadChex

+0

@DeadChex просто попытался использовать Oracle 'jdk 1.7.0_75' - ту же проблему :( –

+0

Вы запускаете его на реальном устройстве или на эмуляторе? J2v8_android_x86 - это, очевидно, настольная вещь, устройство будет использовать что-то, что заканчивается на' arm' – 18446744073709551615

ответ

3

После общения с коллегами мы нашли решение. Погрузчик класса пути фактически не смотрит под корень apk - вместо этого он выглядит в libs/[ARCHITECTURE]. Перемещение файла libj2v8_android_x86.so на libs/x86 и переупаковка действительно решают проблему.

Я полагаю, что модуль maven, возможно, был упакован для более старой версии и, таким образом, не скопировал их в правильный каталог при сборке или просто может быть неправильно сконфигурирован.

Смежные вопросы