Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android NativeActivity和ARCore C库:函数“;ArSession_create();在本机活动中调用时失败_Android_Android Ndk_Arcore_Native Activity - Fatal编程技术网

Android NativeActivity和ARCore C库:函数“;ArSession_create();在本机活动中调用时失败

Android NativeActivity和ARCore C库:函数“;ArSession_create();在本机活动中调用时失败,android,android-ndk,arcore,native-activity,Android,Android Ndk,Arcore,Native Activity,我正试图在NativeActivity中通过ARCore C库创建AR会话。 但是,函数“ArSession\u create()”始终返回错误代码AR\u error\u FATAL(-2),但没有未创建AR会话的崩溃表达式。以下是代码片段: // Get the Android activity by a global variable, which is recorded // in the NDK glue library function "void ANativeActivity_o

我正试图在NativeActivity中通过ARCore C库创建AR会话。 但是,函数“ArSession\u create()”始终返回错误代码AR\u error\u FATAL(-2),但没有未创建AR会话的崩溃表达式。以下是代码片段:

// 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\u create()失败?
是否有人成功地将ARCode C库与NativeActivity一起使用?谢谢你的建议。

我终于知道了原因,所以我想自己回答这个问题

为了在Android应用程序中手动使用ARCore和其他IDE,而不是Android Studio,我们需要做以下几件事:

  • 从Maven存储库下载ARCore库包(.aar)
  • 将ARCore的共享库“libarcore_sdk_c.so”添加到应用程序的APK包中
  • 将ARCore的java库“classes.jar”添加到应用程序的APK包中
  • 我做了1和2,但忘记了3,因此我在运行时得到了类NotFound错误

    出现了更多的错误,但至少我解决了这个问题。
    使用Android Studio开发ARCore应用程序似乎是目前唯一舒适的方式。

    最后我找到了原因,所以我想自己回答这个问题

    为了在Android应用程序中手动使用ARCore和其他IDE,而不是Android Studio,我们需要做以下几件事:

  • 从Maven存储库下载ARCore库包(.aar)
  • 将ARCore的共享库“libarcore_sdk_c.so”添加到应用程序的APK包中
  • 将ARCore的java库“classes.jar”添加到应用程序的APK包中
  • 我做了1和2,但忘记了3,因此我在运行时得到了类NotFound错误

    出现了更多的错误,但至少我解决了这个问题。
    似乎使用Android Studio进行ARCore应用程序开发是目前唯一舒适的方式。

    在将示例嵌入到示例框架时,我也遇到了一个确切的错误:“未能使用自定义类加载器找到com/google/ar/core/SessionCreateJniHelper类”,然后是“未能加载SessionCreateJniHelper类”(使用Android Studio时)


    这个场景中的问题是AndroidManifest.xml中的android:hasCode=“false”指令。即使在基于NativeActivity的应用程序中没有任何Java代码,ARCore中的链接也会添加Java代码,因此在这种情况下,需要删除android:hasCode=“false”指令。

    我也遇到了这个确切的错误将示例嵌入到示例框架时(使用Android Studio时),“未能使用自定义类加载器找到com/google/ar/core/SessionCreateJniHelper类”,然后是“未能加载SessionCreateJniHelper类”


    该场景中的问题是AndroidManifest.xml中的android:hasCode=“false”指令。即使在基于NativeActivity的应用程序中没有任何Java代码,ARCore中的链接也会添加Java代码,因此在这种情况下,android:hasCode=“false”“需要删除指令。

    要确认:您没有收到可以检查的
    ArStatus
    ?从代码“ArStatus status=ArSession\u create(env,activity->clazz,&ArSession);”中,我可以说fnction将值AR\u ERROR\u FATAL(-2)返回到status。我想我们需要关注错误消息“找不到com/google/ar/core/SessionCreateJniHelper类"找到答案。有人知道这个错误消息吗?可能相关?请注意,确定它是否适用于您的场景。嗨,stkent,我正在使用visual studio 2015构建我的原生android应用程序,因此构建过程中没有Proguard,谢谢。确认一下:您没有收到可以插入的
    ArStatus
    ct?从代码“ArStatus status=ArSession_create(env,activity->clazz,&ArSession);”中,我可以说fnction将值AR_ERROR_FATAL(-2)返回到status。我想我们需要关注错误消息“未能找到类com/google/AR/core/SessionCreateJniHelper”找到答案。有人知道这个错误消息吗?可能相关?请注意,确定它是否适用于您的场景。嗨,stkent,我正在使用visual studio 2015构建我的本机android应用程序,因此构建过程中没有Proguard,谢谢。