【发布时间】:2017-09-15 12:06:47
【问题描述】:
我使用的是 Android Studio 版本 - 2.1.2。我在 Android 中创建了一个项目 - MyNdk。本项目使用 c 程序。 c程序有一个功能 获取国家/地区()。该函数在文件 torento.c 中创建。 功能是这样的-
Java_com_myndk_MainActivity_getCountry(JNIEnv *env, jobject instance) **{**
// TODO
//return (*env)->NewStringUTF(env, returnValue);
return (*env)->NewStringUTF(env, "Canada");
**}**
在 java 文件中,我使用此代码加载库 System.loadLibrary("torento")。 libtorento.so 已创建 成功在所有设备的 jni 文件夹下。到目前为止没问题,我可以毫无错误地调用c程序。
现在我创建了第二个项目 - HelloAndroidJni。这个项目也使用了c程序。我想使用 libtorento.so 中的 getCountry()。 本项目有c程序paris.c,创建于jni文件夹下。对于这个项目,库是 libparis.so。 现在,我创建了一个文件夹 jniLibs,在该文件夹下我从第一个项目中为所有设备复制了 libtorento.so。然后我使用以下内容加载了库 java文件中的代码。
static
{
System.loadLibrary("torento");
System.loadLibrary("paris");
}
libtorento.so 在 HelloAndroidJni 项目中加载成功。我检查了 .apk 文件。 libtorento.so 存在于 .apk 文件中。
我的问题是如何在 HelloAndroidJni 项目中调用 getCountry() 。我搜索了很多,到处都有教程/示例 其中 c 程序是从定义它的同一个 java 项目中调用的。 请帮帮我。
在 Android Studio(2.1.2) 中,系统生成 jni 文件夹和 c 文件。没有创建头文件。
【问题讨论】:
-
这个和安卓没有直接关系,看这里:jnicookbook.owsiak.org/recipe-No-001
标签: java android c android-ndk .so