2016-10-26 2 views
0

Во-первых, я использую NDK в MainActivity, он работает отлично .:java.lang.UnsatisfiedLinkError: Не удалось загрузить JNI-вход: findLibrary возвращается нуль

public class MainActivity extends AppCompatActivity { 
TextView textView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    ... 
    EventInput eventInput=new EventInput(); 
    textView.setText(eventInput.eventInject());// NDK 
} 
} 

EventInput.java так:

public class EventInput { 
static { 
    System.loadLibrary("jni-input"); 
} 
public native String eventInject(); 
} 

Затем я удалить MainActivity и в загрузки вещательного приемника я запуска службы и использовали NDK в service`s OnCreate метод, как это:

@Override 
public void onCreate() { 
    super.onCreate(); 
    try { 
     EventInput mockEvent=new EventInput(); 
     Log.d("jni",mockEvent.eventInject()); 
    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 

И я толкаю его в/системы/приложения, чтобы сделать это будет системное приложение, которое будет слушать загрузочного Broadcast и запустить service.but он работает с:

java.lang.UnsatisfiedLinkError: Couldn't load jni-input: findLibrary returned null 
+0

Проверьте свое имя библиотеки, если это libjni-input.X или нет, и сохранен в папке lib проекта. – cagdas

+0

Я проверил его. Это меня очень смутило. Если я начал службу в Activity, ndk можно использовать в сервисе. Но когда я удаляю Activity, ndk сообщает об ошибке, если она была использована в службе – helloliu

+0

Мне интересно, apk в/system/app как работать с .so файлами? – helloliu

ответ

0

Я решил это сам. По сравнению с обычным приложением, nativelibrarydirectories apk в/system/app - /vender/lib и / system/lib по умолчанию - это путь поиска для загрузки файла .so.Так, он работает хорошо, когда я нажимаю свой .so file в/system/lib.

+0

Это не будет работать в приложении для доставки, поэтому, вероятно, это не настоящее «решение» для вас. –

+0

Я смущен. – helloliu

+0

Play Store не будет устанавливать ваши библиотеки в '/ system/lib'. –

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