GNOME Bugzilla – Bug 757732
Failure to load gstreamer_android.so on Android >= 6.0
Last modified: 2015-11-21 04:42:50 UTC
Due to the latest changes in Android 6.0 runtime (http://developer.android.com/intl/ko/about/versions/marshmallow/android-6.0-changes.html#behavior-runtime) Each module should explicitly define it's SONAME. since the building scripts for building android_gstreamer.so don't define soname the library is built without one. This will cause a failure in loading any library that uses libgstreamer_android.so. E/AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: library "./obj/local/armeabi-v7a/libgstreamer_android.so" not found E/AndroidRuntime: at java.lang.Runtime.loadLibrary(Runtime.java:372) E/AndroidRuntime: at java.lang.System.loadLibrary(System.java:1076) The quick fix is to add: TARGET_LDFLAGS := -Wl,-soname,libgstreamer_android.so in your Android.mk file before calling: include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer-1.0.mk The appropriate fix should be to change GSTREAMER_LD in gstreamer-1.0.mk: GSTREAMER_LD := -fuse-ld=gold with: GSTREAMER_LD := -fuse-ld=gold -Wl,-soname,libgstreamer_android.so
Do you want to provide a patch against cerbero for that? What you propose there makes sense and should be done :)
Created attachment 315055 [details] [review] Patch for adding SONAME to gstreamer_android.so
(In reply to Sebastian Dröge (slomo) from comment #1) > Do you want to provide a patch against cerbero for that? What you propose > there makes sense and should be done :) Gladly :) I have commited against the 1.6 branch. BTW: in http://cgit.freedesktop.org/gstreamer/sdk/cerbero/ the clone link: git://anongit.freedesktop.org/gstreamer/sdk/cerbero points to a legacy cerebro repository which is not updated - it should point to the correct repository, it is confusing otherwise :).
(In reply to alex from comment #3) > (In reply to Sebastian Dröge (slomo) from comment #1) > > Do you want to provide a patch against cerbero for that? What you propose > > there makes sense and should be done :) > > Gladly :) I have commited against the 1.6 branch. > > BTW: in http://cgit.freedesktop.org/gstreamer/sdk/cerbero/ > the clone link: git://anongit.freedesktop.org/gstreamer/sdk/cerbero points > to a legacy cerebro repository which is not updated - it should point to the > correct repository, it is confusing otherwise :). http://cgit.freedesktop.org/gstreamer/cerbero/ and http://cgit.freedesktop.org/gstreamer/sdk/cerbero/ Are symlinks it seems (exactly the same). The legacy one was in gstreamer-sdk/cerbero. Not sure why we have that symlink, we should probably remove it now.
Thanks, merged into cerbero master and 1.6 branch. The fix will be included in 1.6.2. commit cb9825cfcd1cc585f3cad8e9c5dd1f1c21e404f6 Author: Alex Dizengof <alex@ireporty.com> Date: Sat Nov 7 18:09:34 2015 +0200 android: Add SONAME to libgstreamer_android.so for compatibility with Android >= 6.0 Due to the latest changes in Android 6.0 runtime (http://developer.android.com/intl/ko/about/versions/marshmallow/android-6.0-changes.html#behavior-runtime) Each module should explicitly define it's SONAME. since the building scripts for building android_gstreamer.so doesn't define soname the library is built without one. This will cause a failure in loading any library that uses libgstreamer_android.so. https://bugzilla.gnome.org/show_bug.cgi?id=757732
*** Bug 758429 has been marked as a duplicate of this bug. ***