如何在另一个Android应用程序中使用预编译的.so文件?

时间:2013-05-10 04:26:28

标签: android-ndk shared-objects

我想知道为什么对这个问题没有正确的答案,我搜索了几个小时但没有好的答案。 所以,我们在一个团队中工作,我的朋友在其中编写了一个C库,并将其编译为.so文件(称为ttplib.so)(假设我无法访问它的C代码)。现在我必须在我的Android应用程序中使用该.so文件。但我不知道如何加载库以及如何使用它的方法。我有很好的文档记录。 如果你能告诉我如何创建Android.mk文件,这将是很好的。 我必须使用dlopen吗?

1 个答案:

答案 0 :(得分:1)

将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 );
    }
}

简而言之就是这样。