【发布时间】:2018-09-23 07:01:56
【问题描述】:
我正在尝试通过 NativeActivity 中的 ARCore C 库创建 AR 会话。 但是,函数“ArSession_create()”总是返回错误代码AR_ERROR_FATAL (-2),但是没有创建AR会话的崩溃异常。以下是sn-p的代码:
// Get the Android activity by a global variable, which is recorded
// in the NDK glue library function "void ANativeActivity_onCreate()"
// by the function's first passed-in parameter
ANativeActivity* activity = _global_android_activity;
//Get the JNI Env for the current thread
JNIEnv* env = NULL;
JavaVM* vm = activity->vm;
int r = vm->AttachCurrentThread(&env, NULL);
//Create AR session
ArSession* arSession = nullptr;
ArStatus status = ArSession_create(env, activity->clazz, &arSession);
if (status != ArStatus::AR_SUCCESS)
CONSOLE_PRINTF(L"@@@@@@@@@@@@@@@ Failed to create AR session!, Result = %d", status);
else
CONSOLE_PRINTF(L"@@@@@@@@@@@@@@@ Succeeded to create AR session!");
Android Logcat 错误信息:
04-12 22:06:10.084 24454-24473/com.omnigsoft.gameenginedemo E/third_party/redwood/base/jni_common/src/class_util.cc: Failed to find class com/google/ar/core/SessionCreateJniHelper using custom class loader.
04-12 22:06:10.085 24454-24473/com.omnigsoft.gameenginedemo E/third_party/arcore/ar/core/android/sdk/session_create.cc: Failed to load SessionCreateJniHelper class.
我已确认我已在 AndroidManifest.xml 文件中为我的 Android 原生应用启用 AR:
- minSdkVersion 设置为 24
- 添加了权限“android.permission.CAMERA”
- 添加了 ARCore 元数据:android:name="com.google.ar.core"
我还确认我的设备(Google Pixel XL)能够运行 ARCore 示例应用“hello_ar_c”(来自 ARCode SDK,由 Android Studio 构建)。
所以问题是:为什么函数 ArSession_create() 会失败? 有没有人成功使用带有 NativeActivity 的 ARCode C 库?感谢您的任何建议。
【问题讨论】:
-
确认:您没有收到可以检查的
ArStatus? -
从代码“ArStatus status = ArSession_create(env, activity->clazz, &arSession);”,我可以说函数返回值AR_ERROR_FATAL (-2) 到状态。
-
我想我们需要关注错误消息“Failed to find class com/google/ar/core/SessionCreateJniHelper”来找到答案。有人知道这个错误信息吗?
-
可能相关?请注意确定它是否适用于您的场景。 github.com/google-ar/arcore-android-sdk/issues/122
-
您好 stkent,我正在使用 Visual Studio 2015 构建我的原生 android 应用程序,因此构建过程中不涉及 Proguard,无论如何,谢谢。
标签: android android-ndk arcore native-activity