我正在使用从 NativeActivity 派生的 Java 类编写本机应用程序。我需要在我的 C++ 代码中获取对该类的引用,但是当我尝试在从 ANativeActivity_onCreate 调用的代码中执行此操作时,找不到该类。我的代码看起来像:
void ANativeActivity_onCreate(ANativeActivity *activity,
void *savedState, size_t savedStateSize)
{
...
JNIEnv *jenv = activity->env;
dsActivityClass = jenv->FindClass("uk/co/realh/hgame/HGameActivity");
if (!dsActivityClass)
{
// Log error and return to Java
}
...
}
我的 logcat 显示了 if 子句打印的错误,然后是 java.lang.NoClassDefFoundError 的报告。
我已经仔细检查了类名,我确定它是正确的。并且在调用上述代码时必须实例化该类,因为它包含一个静态代码块来加载 gnustl_shared,没有它,Android 无法加载包含ANativeActivity_onCreate
. 什么可能导致找不到类?它是这样定义的:
package uk.co.realh.hgame;
import android.app.NativeActivity;
...
public class HGameActivity extends NativeActivity {
...
}