没有找到 void com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator() 的实现
No implementation found for void com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator()
我是 Unity 的新手,我正在尝试将 Unity 游戏(它有 ARcore)集成到本机 Android 应用程序中。
我可以在新的 HelloWorld 应用程序中启动 unity,但无法在我的真实应用程序(具有其他模块)中启动。
注意:当我从 Unity 项目构建 android 库时,我包括了 armeabi-v7a 和 x86 架构。
java.lang.UnsatisfiedLinkError: No implementation found for void com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator() (tried Java_com_unity3d_player_UnityPlayer_nativeRestartActivityIndicator and Java_com_unity3d_player_UnityPlayer_nativeRestartActivityIndicator__)
at com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator(Native Method)
at com.unity3d.player.UnityPlayer.resume(Unknown Source:37)
at com.rccl.soakTest.UnityPlayerActivity.onResume(UnityPlayerActivity.java:58)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1361)
at android.app.Activity.performResume(Activity.java:7344)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3763)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3828)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3036)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
在以下设备上测试:
SamsungS8 (Oreo), Emulator-Nexus 6(Oreo)
如果你导出build.gradle
中的unity工程,你需要在你的android工程中加上这句话app.gradle:
defaultConfig {
ndk {
abiFilters 'armeabi-v7a', 'x86'
}
}
在我的例子中,它是由 JNI 库引起的。
我创建了一个空的 Android 项目并添加了 unity 项目作为模块。
所以默认 Android 项目无法找到正确的 JNI 库,它会导致与您的错误消息相同的崩溃。
如果您检查您的 JNI 文件是否在项目中。
如果有,检查gradle个文件,哪些路径添加正确
终于找到问题的原因了,
问题:它正在寻找 ARM-64 架构的 JNI 库 (.so) 文件。
ARCore 当前未扩展对 ARM64 的支持(https://github.com/google-ar/arcore-unity-sdk/issues/201。-> 现在已修复)并且应用程序崩溃。
我的应用程序仅支持 ARM64 和 ARMV7。当我从 ABI 过滤器和拆分中排除 ARM64 时。有效。
由于其他问题,我不再使用 ARCore。
尝试启用 ARM64:
- 更新 unity 到 2018.3
- 在 android 播放器设置中将 "scripting backend" 更改为 IL2CPP。
- 在 android 播放器设置中标记 ARM64 复选框已选中。
我是 Unity 的新手,我正在尝试将 Unity 游戏(它有 ARcore)集成到本机 Android 应用程序中。
我可以在新的 HelloWorld 应用程序中启动 unity,但无法在我的真实应用程序(具有其他模块)中启动。
注意:当我从 Unity 项目构建 android 库时,我包括了 armeabi-v7a 和 x86 架构。
java.lang.UnsatisfiedLinkError: No implementation found for void com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator() (tried Java_com_unity3d_player_UnityPlayer_nativeRestartActivityIndicator and Java_com_unity3d_player_UnityPlayer_nativeRestartActivityIndicator__)
at com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator(Native Method)
at com.unity3d.player.UnityPlayer.resume(Unknown Source:37)
at com.rccl.soakTest.UnityPlayerActivity.onResume(UnityPlayerActivity.java:58)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1361)
at android.app.Activity.performResume(Activity.java:7344)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3763)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3828)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3036)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
在以下设备上测试: SamsungS8 (Oreo), Emulator-Nexus 6(Oreo)
如果你导出build.gradle
中的unity工程,你需要在你的android工程中加上这句话app.gradle:
defaultConfig {
ndk {
abiFilters 'armeabi-v7a', 'x86'
}
}
在我的例子中,它是由 JNI 库引起的。
我创建了一个空的 Android 项目并添加了 unity 项目作为模块。
所以默认 Android 项目无法找到正确的 JNI 库,它会导致与您的错误消息相同的崩溃。
如果您检查您的 JNI 文件是否在项目中。
如果有,检查gradle个文件,哪些路径添加正确
终于找到问题的原因了,
问题:它正在寻找 ARM-64 架构的 JNI 库 (.so) 文件。
ARCore 当前未扩展对 ARM64 的支持(https://github.com/google-ar/arcore-unity-sdk/issues/201。-> 现在已修复)并且应用程序崩溃。
我的应用程序仅支持 ARM64 和 ARMV7。当我从 ABI 过滤器和拆分中排除 ARM64 时。有效。
由于其他问题,我不再使用 ARCore。
尝试启用 ARM64:
- 更新 unity 到 2018.3
- 在 android 播放器设置中将 "scripting backend" 更改为 IL2CPP。
- 在 android 播放器设置中标记 ARM64 复选框已选中。