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

标签 android-ndk shared-objects

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

最佳答案

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

简而言之,就是这样。

关于android-ndk - 如何在另一个Android应用程序中使用预编译的.so文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16475180/

相关文章:

Android ndk 内核模块在 windows 中编译

c++ - 共享对象文件应该放在哪里?

android - 从 ndk 写入 Android 显示器

java - 更改包名称 android manifest 导致问题 JNI

opencv - 如何在 Intellij 上设置 NDK

c++ - dlopen : St9bad_alloc 错误

flash - Flex 4.5 iOS 移动项目 : SharedObject problems

android - 我如何保护嵌入到我的 .apk 文件中的 .so?

android - ndk-stack给我只有libc框架