我想为多个应用程序使用一个本机库。库已通过 android 构建系统编译,现在位于 /system/lib/。它可以通过 System.LoadLibrary("libexample") 加载到应用程序中。但是库中的方法应该声明为
JNIEXPORT jstring JNICALL Java_application1_MainActivity_method1
结果不可用,因为库应该由多个应用程序使用。当然,这几个应用程序都有自己独特的名称。所以我试着给我的方法命名,就像
JNIEXPORT jstring JNICALL method1
并打电话
public native String method1(String string);
但当然我的应用程序试图找到它作为 Java_application1_MainActivity_method1
如何调用此方法或应如何命名?
更新:
我尝试使用这个(参见带有绿色勾号的帖子)教程来完成我的项目。我写了一个使用本机方法的库:
package com.example.mylib;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MyClass extends Activity {
public native static String MyMethod(String string);
static {
System.loadLibrary("nativeLibrary");
}
}
然后我尝试在我的应用程序中使用它:
// Some no interesting inclusions
import com.example.mylib.MyClass;
public class MainActivity extends ListActivity {
// Some no interesting code.
MyMethod(file.getAbsolutePath())
//Some no interesting code
}
它可以按我的需要工作!但现在我很困惑我的import com.example.mylib.MyClass; 在 Eclipse 中 “从未使用过”。如果我用这个“ Is Library ”项目创建图像,最新的将无法解决。任何的想法?