Hi,
So currently I want to create AR core application with minSDK 14. Based on https://developers.google.com/ar/develop/c/enable-arcore#manifest it should support min API 14 for optional AR. But when I try it, it's crashed at launch.
I try to modify the native sample (hello_ar_c) so it will installed on API greater than 14 and it also crashed. I try this on Moto G 4G (XT1039) FW 5.1. Note that same application worked flawlessly on S8
here's the crash log
03-02 18:45:39.740 30157-30157/? I/art: Late-enabling -Xcheck:jni
03-02 18:45:40.234 30157-30157/com.google.ar.core.examples.c.helloar I/InstantRun: starting instant run server: is main process
03-02 18:45:40.448 30157-30157/com.google.ar.core.examples.c.helloar W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
03-02 18:45:40.594 30157-30157/com.google.ar.core.examples.c.helloar W/linker: libhello_ar_native.so: unused DT entry: type 0x6ffffffe arg 0x2dfb0
03-02 18:45:40.594 30157-30157/com.google.ar.core.examples.c.helloar W/linker: libhello_ar_native.so: unused DT entry: type 0x6fffffff arg 0x4
03-02 18:45:40.594 30157-30157/com.google.ar.core.examples.c.helloar W/linker: libarcore_sdk.so: unused DT entry: type 0x6ffffffe arg 0x4ed8
03-02 18:45:40.594 30157-30157/com.google.ar.core.examples.c.helloar W/linker: libarcore_sdk.so: unused DT entry: type 0x6fffffff arg 0x3
03-02 18:45:40.595 30157-30157/com.google.ar.core.examples.c.helloar E/art: dlopen("/data/app/com.google.ar.core.examples.c.helloar-2/lib/arm/libhello_ar_native.so", RTLD_LAZY) failed: dlopen failed: library "libcamera2ndk.so" not found
03-02 18:45:40.595 30157-30157/com.google.ar.core.examples.c.helloar D/AndroidRuntime: Shutting down VM
03-02 18:45:40.597 30157-30157/com.google.ar.core.examples.c.helloar E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.google.ar.core.examples.c.helloar, PID: 30157
java.lang.UnsatisfiedLinkError: dlopen failed: library "libcamera2ndk.so" not found
at java.lang.Runtime.loadLibrary(Runtime.java:371)
at java.lang.System.loadLibrary(System.java:988)
at com.google.ar.core.examples.c.helloar.JniInterface.<clinit>(JniInterface.java:15)
at com.google.ar.core.examples.c.helloar.HelloArActivity.onCreate(HelloArActivity.java:121)
at android.app.Activity.performCreate(Activity.java:6010)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1129)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2413)
at android.app.ActivityThread.access$800(ActivityThread.java:155)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
I attach my changes, is this correct?
0001-Chage-Ar-to-optional-and-minsdk-to-14.txt
It seems the problem is when the java code try to open the main application library which link to arcore.so which try to open libcamera2ndk.so that only exist on API greater than 24.
I think libarcore_sdk.so may be incorrectly depending on libcamera2ndk.so. I'm pretty sure it doesn't actually have a runtime dependency, but might have picked it up by using camera data types in the camera metadata APIs. Investigating.
I see the tag 'fixed in upcoming release' as been added.
When is the next release? This is currently affecting my app.
~"In the coming weeks".~ Hopefully later this week.
Yikes!
Going to have to pull AR Core until then I suppose. Thanks!
I've been told I can say "hopefully later this week".
OK, great. I'll keep an eye out, Thanks!
This should be fixed with the just-released ARCore SDK v1.1.0.
This may not quite be completely fixed 馃槥. It appears NDK applications running in 32-bit mode may still encounter issues loading the ARCore SDK .so on API<24. Investigating.
hello, i also got kind of similar issue
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__aeabi_memmove" referenced by "/data/app/com.*..*/lib/arm/libarcore_sdk_c.so"
So far it only happens on Samsung Galaxy S5 G900F firmware 6.0.1
@expee Yep, that's the one. We're working on a fix for the next release.
Looking forward for the fix.. :)
btw, when will the next version come?
@expee I can't comment on timeline for 1.2. If it ends up being much past I/O though I'll push to get a fix for this out as an updated 1.1 SDK sooner.
Very well then.. I guess i'll use separate APKs for my release as a workaround for this problem temporarily.
@expee: Small update: to ensure the smoothest user experience, until this is fixed we recommend releasing multiple APKs using API level as the selector, not ARCore compatibility. Selecting on ARCore will require the with-AR version of the app be marked as AR-Required, resulting in a sub-optimal auto-update flow for users on supported devices.
/me crosses fingers
This should be fixed with the just-released ARCore SDK v1.2.0.
Gaaaaah, it's the zombie bug. We had verified that the offending symbol deps were gone but they crept back in before the 1.2 release somehow.
Hello,
I tried updating the SDK to ver 1.2.0 from 1.1.0,
We have similar issue with different device now, it happened on :
Samsung Galaxy Note II (GT-N7100) and Galaxy S4 (i9300) with this error message :
java.lang.UnsatisfiedLinkError: dlopen failed: could not load library "libarcore_sdk_c.so" needed by "..."; caused by cannot locate symbol "stderr" referenced by "libarcore_sdk_c.so"...
Note II could still works with our ARCore build in version 1.1.0 of ARCore before.
Is this the same issue? or is this caused by an important change in the update?
oh yeah, just adding on the reports, the comment submitted by expee still happens too on Android Galaxy S5 (SM-G900F) with the same error message.
@gamingisfun Thanks for the additional details. That's the first time I've seen "stderr" show up as the offending symbol.
Another vote for a hopeful future fix for this issue
I think we have this fixed for 1.3. I've been able to repro the __aeabi_memmove failure on a Nexus 7 running 6.0.1 and verified that it's fixed.
On another note, is there a plan to support x84_64? It makes my makefile have some conditional stuff in it I'd prefer to not have...
@eddielong See #333
Oh, ha that was me. Forgot I created that issue
Some more info if it helps:
ARCore SDK 1.2.0
Device: Samsung Galaxy J5
OS: Marshmallow 6.0.1
Chipset: Qualcomm MSM8916 Snapdragon 410
Crashlog:
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__aeabi_memmove" referenced by "/data/app/com.blippar.ar.android.beta-1/lib/arm/libarcore_sdk_c.so"
Might help nail this one down.
@eddielong Thanks, we're working on this and hope to have it fixed in 1.3. I'd say "we have this fixed in 1.3" but ... well ... it broke again and even the android build team isn't sure why.
@inio I don't see this issue in the Release Notes for 1.3, did it make it in?
This should be fixed in 1.3 (yeah, it didn't get into the release notes, oops).
Hi,
Could anyone help with ARCore SDK release 1.3 similar with prev issue?
Crash still occurred in FW < 4.3 with CrashLog:
java.lang.UnsatisfiedLinkError: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libarcore_sdk_c.so" needed by ... ; caused by load_library(linker.cpp:745): library "libarcore_sdk_c.so" not found
@eastgreen You probably need to guard loading of ARCore with Android API check SDK_VERSION >= 24
@eastgreen That looks like a different crash. That sounds like you're missing the libarcore_sdk_c.so for the current architecture.
I'm seeing this issue again in the 1.5 release, roll back to 1.4 and all is ok. Has there been a regression in this area?
See attached example which is a modified version of the 'augmented_image_c' sample. I have lowered the minimum SDK version to 22, added armeabi-v7a to supported ABIs and cleared down all initialisation of ARCore in augmented_image_application.cc and JNI methods. The goal being just that the arcore shared lib is being loaded from C++. This matches my own application's requirement, there are runtime checks to enable ARCore or not. Reverting to 1.4.0 in the app build.gradle and the sample app loads, 1.5.0 crashes. I hope this is enough to debug this issue.
@inio can we re-open this ticket please? Otherwise I can create a new ticket.
@parrotbait Thanks for the report. we'll investigate.
@parrotbait I think this was fixed in the 1.6 SDK released yesterday. Please try it out and let us know.
Will do thanks
As a part of ongoing efforts to maintain ARCore repositories, I鈥檓 closing this issue as stale since it hasn鈥檛 had activity in more than 6 months. If this issue is still relevant, please feel free to file a new bug using the latest version of the SDK.
Most helpful comment
This should be fixed in 1.3 (yeah, it didn't get into the release notes, oops).