AS 手机App项目中加入 AS 做的 so 项目,App 中 的 java 代码中调用 jni 的类,报红,提示 Cannot resolve symbol
编译环境 Android Studio 3.5.2;
我原有一个手机app的项目,后来因为项目需要,需要增加 so 的库(关于加密解密的功能,可以移植现有的c++ 的代码);
so 的库也是我用 AS 开发,首先,我用 AS 创建了一个新项目,使用 Native C++ 创建;按照网上朋友们的博客教程(非常感谢这些提供教程和资源的程序员大侠们!),先写了简单的 class 文件,然后用 javac 编译,然后再用 javah 生成头文件,加入到项目中....
在手机 App 项目中,使用 Link C++ project with Gradle 功能,把该so项目加入到我原有的项目中,经过编译等等,竟然没有出错,然后我在mainActivity中
static {
// rc 改为其他字符串时,调用会出错,证明这里是成功调用rc了,但是,还不知道怎么用里面的类和函数
System.loadLibrary("rc");
}
载入应该成功了,因为我吧“rc”改成其他字符串时,载入会出错的。我的so项目名称是 rc;
但是,问题来了:我在调用rc中的类时(Rick Demo = new Rick();),报红,提示 “Cannot resolve symbol ”意思是找不到类;
Rick 类是我在 java 文件中声明的类,
java 文件代码如下:
package com.example.cso;
public class Rick{
static {
System.loadLibrary("rc");
}
public native int add(int i, int j);
}
下面是javah 生成的 .h 文件的代码
#include <cstring>
#include "com_example_cso_Rick.h"
#include "rc.h"
JNIEXPORT jint JNICALL Java_com_example_cso_Rick_add
(JNIEnv *env, jobject obj, jint i, jint j)
{
return i + j;
}
调用时代码
Rick Demo = new Rick();
int nrtn = demo.add(2, 5);
报红,提示 “Cannot resolve symbol ”意思是找不到类(Rick);
盼望有类似开发经验的大侠们关注一下,给点提示;
感觉现在就像是一层窗户纸,捅破就可以继续进行;但是目前我找不到这层纸在哪里
前面发了一贴,感觉描述不清楚,又发了本帖,请见谅