UnityOculusAndroidVRBrowser icon indicating copy to clipboard operation
UnityOculusAndroidVRBrowser copied to clipboard

Only works for arm7

Open Jamesfleming1 opened this issue 3 years ago • 9 comments

Whenever I set the target architecture to arm7 every works as expected. But if I try to build for arm64 the web browser crashes the app upon loading. Is there something that requires it to be build for arm7 or just a setting somewhere that I am missing that would allow it to be built for arm64

Jamesfleming1 avatar Jul 01 '21 19:07 Jamesfleming1

Hmmmm I know that I only included the gecko engine library for arm7. You can download the engine for other architectures here. I don't remember any specific reason why the plugin might not work other than that. Will the Oculus SDK work with other architectures?

IanPhilips avatar Jul 04 '21 20:07 IanPhilips

Hmm okay. I downloaded the .aar from https://maven.mozilla.org/maven2/?prefix=maven2/org/mozilla/geckoview/geckoview-arm64-v8a/90.0.20210705185941/, put it into the proper folder in unity.

Then I changed the build.gradle in GeckoViewPlugin/app/build.gradle to have implementation "org.mozilla.geckoview:geckoview${geckoviewChannel}-arm64-v8a:${geckoviewVersion}" with the proper geckoviewVersion

However building my unity project it still crashes... Am I missing something? Do I need to build something outside of unity? something from the GeckoViewPlugin?

Jamesfleming1 avatar Jul 06 '21 23:07 Jamesfleming1

FATAL EXCEPTION: Gecko 07-08 16:22:28.548 10431 10564 E AndroidRuntime: Process: com.DartmouthSILVR.QuickSilvr, PID: 10431 07-08 16:22:28.548 10431 10564 E AndroidRuntime: java.lang.RuntimeException: LOAD mozglue: ABI: unknown (0x0), arm64-v8a: Data: /data/user/0/com.DartmouthSILVR.QuickSilvr, ax=false, ddx=false, -1x=false, -2x=false, nativeLib: /data/app/com.DartmouthSILVR.QuickSilvr-2SCL0Zqm8nNJlrbg5wOCFw==/lib/arm64, dirx=true, libx=false 07-08 16:22:28.548 10431 10564 E AndroidRuntime: at org.mozilla.gecko.mozglue.GeckoLoader.doLoadLibrary(GeckoLoader.java:468) 07-08 16:22:28.548 10431 10564 E AndroidRuntime: at org.mozilla.gecko.mozglue.GeckoLoader.loadMozGlue(GeckoLoader.java:476) 07-08 16:22:28.548 10431 10564 E AndroidRuntime: at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:421) 07-08 16:22:28.548 10431 10564 E AndroidRuntime: Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.DartmouthSILVR.QuickSilvr-2SCL0Zqm8nNJlrbg5wOCFw==/base.apk"],nativeLibraryDirectories=[/data/app/com.DartmouthSILVR.QuickSilvr-2SCL0Zqm8nNJlrbg5wOCFw==/lib/arm64, /data/app/com.DartmouthSILVR.QuickSilvr-2SCL0Zqm8nNJlrbg5wOCFw==/base.apk!/lib/arm64-v8a, /system/lib64, /system/product/lib64]]] couldn't find "libmozglue.so"

Here are my error logs, looks like it can't find "libmozglue.so"

Jamesfleming1 avatar Jul 08 '21 20:07 Jamesfleming1

Hm if that's not a library you can include like I did here (those are libraries the gecko engine asked for) you could try asking in Bugzilla about that error when using their library in Unity.

IanPhilips avatar Jul 12 '21 18:07 IanPhilips

Where did you get those libraries? All I did was switch out the .aar file but maybe I need to switch out all of those libraries to arm64 versions. I didn't see any of those files where I got the .aar from https://maven.mozilla.org/maven2/?prefix=maven2/org/mozilla/geckoview/

Jamesfleming1 avatar Jul 12 '21 20:07 Jamesfleming1

I don't remember exactly where I got them but from a quick google search I see they're available to download (common-1.1.1.jar. Have you tried searching for libmozglue.so?

IanPhilips avatar Jul 13 '21 17:07 IanPhilips

using gecko version 80 seems to work for me

toki1 avatar Nov 01 '22 15:11 toki1

using gecko version 80 seems to work for me

Do you mean the latest version (98) in my PR #43 ?

IanPhilips avatar Nov 07 '22 03:11 IanPhilips

@Jamesfleming1 I found a fix for the application crashing on ARM64.

I was able to get around this issue fairly easily by deleting the GeckoView ARMv7 plugin from the project files and replacing it with the ARM64 plugin marked with the same version number.

At the time of writing, the correct file to use is "geckoview-arm64-v8a-80.0.20200818235255.aar" from the geckoview download page.

From my experimentation with the browser plugin, the build doesn't actively use the GeckoViewPlugin folder included in the repository -- I can delete that entire folder and the project builds/runs as expected. I think you'd have to recompile the plugin after changing the specified version number in order to see a difference, but just replacing the file with this specific version is a way to fix the issue without doing a deep dive like that.

Hope this helps.

JimothyMarmalade avatar Jan 09 '23 20:01 JimothyMarmalade