实现“android studio调用so库测试helloworld”流程

下面是整个流程的步骤表格:

步骤 对应代码
1. 创建一个新的Android项目
2. 在项目中添加so库文件
3. 在项目中创建一个Java类
4. 在Java类中加载so库文件 System.loadLibrary("helloworld");
5. 在Java类中调用so库中的方法 native void sayHello();
6. 在so库文件中实现sayHello方法 JNIEXPORT void JNICALL Java_com_example_helloworld_SoLibrary_sayHello(JNIEnv *, jobject);

接下来,让我们一步一步来实现这个流程。

步骤 1: 创建一个新的Android项目

首先,在Android Studio中创建一个新的Android项目。你可以按照下面的步骤进行操作:

  1. 打开Android Studio。
  2. 点击 "Start a new Android Studio project" 或者 "File" -> "New" -> "New Project"。
  3. 根据向导填写项目名称、包名等信息,选择合适的目标设备和最低API版本。
  4. 点击 "Finish" 完成项目创建。

步骤 2: 在项目中添加so库文件

接下来,我们需要将so库文件添加到项目中。假设你已经有一个名为libhelloworld.so的so库文件,你可以按照下面的步骤将它添加到项目中:

  1. 在Android Studio中的Project视图下,找到 "app" -> "src" -> "main" 目录。
  2. 在 "main" 目录下创建一个名为 "jniLibs" 的文件夹,如果已经存在则不需要创建。
  3. 将libhelloworld.so文件拷贝到 "jniLibs" 文件夹中。

现在,你的so库文件已经成功添加到项目中。

步骤 3: 在项目中创建一个Java类

接下来,我们需要在项目中创建一个Java类来加载和调用so库中的方法。你可以按照下面的步骤进行操作:

  1. 在Android Studio中的Project视图下,找到 "app" -> "src" -> "main" -> "java" 目录。
  2. 在 "java" 目录下创建一个包,比如 "com.example.helloworld"。
  3. 在 "com.example.helloworld" 包下创建一个名为 "SoLibrary" 的Java类。

现在,你已经创建了一个Java类。

步骤 4: 在Java类中加载so库文件

在Java类中加载so库文件是使用System.loadLibrary方法来实现的。在 "SoLibrary" 类中添加以下代码:

public class SoLibrary {
    static {
        // 加载so库文件
        System.loadLibrary("helloworld");
    }
}

这段代码会在类加载时自动加载so库文件。

步骤 5: 在Java类中调用so库中的方法

在Java类中调用so库中的方法是通过本地方法来实现的。在 "SoLibrary" 类中添加以下代码:

public class SoLibrary {
    static {
        // 加载so库文件
        System.loadLibrary("helloworld");
    }
  
    // 声明本地方法
    public native void sayHello();
}

这段代码声明了一个本地方法 "sayHello",用来调用so库中的方法。

步骤 6: 在so库文件中实现sayHello方法

最后,我们需要在so库文件中实现sayHello方法。在 "SoLibrary" 类所在的目录下创建一个名为 "SoLibrary.c" 的C文件,并添加以下代码:

#include <jni.h>

JNIEXPORT void JNICALL Java_com_example_helloworld_SoLibrary_sayHello(JNIEnv *env, jobject instance) {
    // 打印 "Hello World!"
    printf("Hello World!");
}

这段代码实现了sayHello方法,将打印 "Hello World!"。

现在,你已经完成了整个流程。你可以在其他地方调用 "SoLibrary" 类中的 "sayHello" 方法,来测试是否成功调用了so库中的方法。

希望这篇文章对你有所帮助!