Thi*_*ago 10 java-native-interface android android-ndk
我有以下方案可以继续.我得到了一个共享库(libeffect.so),用于我正在为客户工作的Android项目.我没有共享库源代码,我只有.so文件.该库已预编译为可在Android设备上运行.与共享库一起,我有方法签名
public static native void doEffect(int param1, IntBuffer intBuffer);
Run Code Online (Sandbox Code Playgroud)
所以现在我有一些关于如何调用源的本机方法的问题,如果这可能只有.so文件,那么它们是:
我是否需要将本机方法签名放在与.so相同的包/类中,或者我可以在项目的任何包/类中使用此签名,在运行时jvm将能够找到该方法共享库?例如,如果这个共享库首先在类mypackage.MyClass中使用,我是否需要创建相同的包,类,然后将方法签名放在那里?
我在哪里需要将这个.so文件放在我的eclipse android项目中,以便在我的apk文件中部署这个文件?
这些问题可能听起来像菜鸟,但我从来没有使用过jndi所以我有点担心如果调用方法doEffect没有任何错误就可以实现.任何可以指导我的答案都是非常受欢迎的.
非常感谢Thiago
- 我是否需要将本机方法签名放在与.so相同的包/类中,或者我可以在项目的任何包/类中使用此签名,在运行时jvm将能够找到该方法共享库?例如,如果这个共享库首先在类mypackage.MyClass中使用,我是否需要创建相同的包,类,然后将方法签名放在那里?
无需创建相同的包/类.您可以将方法签名放在任何包中.
public class NativeLib {
static {
System.loadLibrary("so_file");
}
public static native void doEffect(int param1, IntBuffer intBuffer);
}
Run Code Online (Sandbox Code Playgroud)
2.我需要在我的eclipse android项目中放置这个.so文件才能将这个文件部署到我的apk文件中?
您已将此.so文件放在应用程序的lib文件夹中.如果没有lib文件夹,那么您可以创建一个lib文件夹并放入.so文件.你可以使用System.loadLibrary("so_ file")来调用它;
| 归档时间: |
|
| 查看次数: |
17490 次 |
| 最近记录: |