我想知道为什么这个问题没有正确的答案,我搜索了几个小时但没有好的答案。因此,我们在一个团队中工作,我的朋友编写了一个 C 库并将其编译为 .so 文件(称为 ttplib.so)(假设我无权访问它的 C 代码)。现在我必须在我的 android 应用程序中使用那个 .so 文件。但我不知道如何加载库以及如何使用它的方法。我有很好的文档。如果您也能告诉我如何创建 Android.mk 文件,那就太好了。我必须使用 dlopen 吗?
问问题
1593 次
1 回答
2
将 ttplib.so 放在新项目的 libs/armeabi 或 libs/armeabi-v7a 文件夹中,具体取决于它是用什么编译的。
在您的新应用程序中的某处(在与库交互之前)添加这行代码
System.loadLibrary( "ttplib" );
现在它已加载到内存中,您需要使用 JNI 与它进行交互。您必须返回 C 代码来导出一些 JNI 函数:
JNIEXPORT jint JNICALL Java_com_example_package_MyClass_methodName( JNIEnv* env, jobject jthis, jfloat value )
{
return 5;
}
然后你需要在你的新项目中添加 ClassName.java:
package com.example.package;
public class MyClass
{
private native int methodName( float value );
private void someJavaMethod()
{
int i = methodName( 65.33f );
}
}
简而言之,就是这样。
于 2013-05-11T05:13:40.840 回答