Qt 5.8 deploy fail on android dlopen failed: cannot locate symbol "__page_size"
-
After I made a tutorial here https://bitbucket.org/aykutozdemir/mysql_driver_qt to deploy the application onto the phone. Build everything successful. But when running on the phone, it crashed.
I found the problem here https://stackoverflow.com/questions/36002823/ndk-build-fails-to-build-superpowered-audio-library-after-recent-ndk-update. But I do not know how to solve it. Did anyone fix this? thanks advance.I libpersona: KNOX_SDCARD checking this for 10229 I libpersona: KNOX_SDCARD not a persona W SELinux : SELinux: seapp_context_lookup: seinfo=default, level=s0:c512,c768, pkgname=org.qtproject.example.kinhdoanh I art : Late-enabling -Xcheck:jni D TimaKeyStoreProvider: TimaSignature is unavailable D ActivityThread: Added TimaKeyStore provider W System : ClassLoader referenced unknown path: W System.err: java.lang.reflect.InvocationTargetException W System.err: at java.lang.reflect.Method.invoke(Native Method) W System.err: at org.qtproject.qt5.android.bindings.QtLoader.loadApplication(QtLoader.java:237) W System.err: at org.qtproject.qt5.android.bindings.QtLoader.startApp(QtLoader.java:647) W System.err: at org.qtproject.qt5.android.bindings.QtActivityLoader.onCreate(QtActivityLoader.java:181) W System.err: at org.qtproject.qt5.android.bindings.QtActivity.onCreateHook(QtActivity.java:266) W System.err: at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:273) W System.err: at android.app.Activity.performCreate(Activity.java:6876) W System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135) W System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206) W System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) W System.err: at android.app.ActivityThread.access$1100(ActivityThread.java:221) W System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) W System.err: at android.os.Handler.dispatchMessage(Handler.java:102) W System.err: at android.os.Looper.loop(Looper.java:158) W System.err: at android.app.ActivityThread.main(ActivityThread.java:7225) W System.err: at java.lang.reflect.Method.invoke(Native Method) W System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) W System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) W System.err: Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__page_size" referenced by "/data/app/org.qtproject.example.kinhdoanh-1/lib/arm/libQt5Core.so"... W System.err: at java.lang.Runtime.load(Runtime.java:332) W System.err: at java.lang.System.load(System.java:1069) W System.err: at org.qtproject.qt5.android.QtNative.loadQtLibraries(QtNative.java:172) W System.err: at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:582) W System.err: ... 18 more D ViewRootImpl: #1 mView = com.android.internal.policy.PhoneWindow$DecorView{c3c9e76 V.E...... R.....I. 0,0-0,0} D SecWifiDisplayUtil: Metadata value : none
-
Hi and welcome to devnet,
AFAIK, the quick solution is to use a lower version of the NDK in order to avoid this.
-
I tried android-ndk 10e, 11, 15, in android 10e app crash but did not display any information. I found the error lies in libc.so of andorid ndk. If I remove libc.so the application runs but libmaria.so does not load because libmariadb.so requires libc.so. I use the android 9 API
-
IIRC, Qt requires at least API level 13 to run.
-
Finally, I solved it by rebuilding the Qt library. My problem is really confusing with the real device. I try running on samsung note 4 (exynos) then crash. But running on the virtual machine, real machine LG (G1), samsung (j2) things are very good. Perhaps the problem lies in the QMutex library (debug) when running on exynos crash that does not show any in logcat. I'm not sure QMutex is compatible with exynos chips.
-
Finally, I solved it by rebuilding the Qt library. My problem is really confusing with the real device. I try running on samsung note 4 (exynos) then crash. But running on the virtual machine, real machine LG (G1), samsung (j2) things are very good. Perhaps the problem lies in the QMutex library (debug) when running on exynos crash that does not show any in logcat. I'm not sure QMutex is compatible with exynos chips.
@Xuan-Dien said in Qt 5.8 deploy fail on android dlopen failed: cannot locate symbol "__page_size":
QMutex is compatible with exynos chips
I would be really surprised if it would not be "compatible". It is by far more likely that something is wrong in your app and only appears under specific conditions.