java.lang.UnsatisfiedLinkError:无法加载jni-input:findLibrary返回null

时间:2016-10-26 04:46:43

标签: java android android-ndk

首先,我在MainActivity中使用NDK,它工作正常。:

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 onCreate方法< / em> ,像这样:

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

我将它推送到/ system / app使其成为一个系统应用程序,它将监听 启动广播 并启动该服务。但它运行时:< / p>

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

1 个答案:

答案 0 :(得分:0)

我自己解决了。与普通应用程序相比,/ system / app中apk的nativelibrarydirectories默认为/vender/lib/ system/lib,这是加载.so文件的搜索路径。所以,它适用于我将.so file推入/ system / lib。