【发布时间】:2013-08-22 13:33:15
【问题描述】:
我正在使用从 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 {
...
}
【问题讨论】:
标签: android-ndk java-native-interface native-activity