Ich entwickle eine Qt5-Anwendung für Android (mit CMake!) Und derzeit versuche ich, Standortdaten mit Qt QGeoPositionInfoSource
zu lesen. Alle meine Anwendung tut so weit in Ordnung, aber wenn ichQt5 QGeoPositionInfoSource :: createDefaultSource() stürzt auf Android 5.0
auto source = QGeoPositionInfoSource::createDefaultSource(this);
stürzt die Anwendung sofort und logcat
gibt mir:
I/__log_qt( 422): (II) dpw_qt5: <last output from my app>
F/libc ( 422): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 797 (QtThread)
I/DEBUG ( 333): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 333): Build fingerprint: 'samsung/trltexx/trlte:5.0.1/LRX22C/N910FXXU1BOE3:user/release-keys'
I/DEBUG ( 333): Revision: '12'
I/DEBUG ( 333): ABI: 'arm'
I/DEBUG ( 333): pid: 422, tid: 797, name: QtThread >>> org.qtproject.DPW <<<
I/DEBUG ( 333): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
I/DEBUG ( 333): r0 00000000 r1 9d2bedf8 r2 00010006 r3 be7eb61d
I/DEBUG ( 333): r4 9d2bedf4 r5 9d2bedf8 r6 00000000 r7 9cffa030
I/DEBUG ( 333): r8 9d2bedf4 r9 afd04388 sl 00000001 fp 9d2bf8dc
I/DEBUG ( 333): ip 9cff9e80 sp 9d2bedd0 lr 9cff49b7 pc 9cff612e cpsr 60070030
I/DEBUG ( 333):
I/DEBUG ( 333): backtrace:
I/DEBUG ( 333): #00 pc 0000512e /data/data/org.qtproject.DPW/qt-reserved-files/plugins/position/libqtposition_android.so
I/DEBUG ( 333): #01 pc 000039b3 /data/data/org.qtproject.DPW/qt-reserved-files/plugins/position/libqtposition_android.so
Ich habe die letzten drei Android NDKs und mehrere Versionen verwendet von Qt von 5,6 bis 5,9 - alle mit dem gleichen Ergebnis, also denke ich, dass ich systematisch etwas falsch mache.
Meine AndroidManifest.xml
enthält die folgenden Zeilen:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Haben Sie für mich eine Ahnung, wo ich anfangen kann, zu untersuchen?
Update:
Ich habe die oberste Zeile des Call-Stack Tracing zurück:
I/DEBUG ( 333): #00 pc 0000512e /data/data/org.qtproject.DPW
und ich fand heraus, dass die folgende Zeile innerhalb jnipositioning.cpp
den Absturz verursacht:
if (javaVM->GetEnv((void**)&jniEnv, JNI_VERSION_1_6) < 0) {
so ist die neue Frage: Was kann javavm->GetEnv()
machen (indeklariert 10) Absturz?
Ein weiteres Update:
jpo38 wies darauf hin, dass das Gebäude mit qmake Ergebnissen in einem Android-App, die nicht abstürzt. Ich habe ein github project eingerichtet, das dieses Verhalten demonstriert.
Die Frage ist nun: Was ist der Unterschied zwischen den Apps, die mit CMake und qmake konfiguriert werden?
Sie sollten versuchen, einen Qt-Fehler zu melden. – jpo38
Ich habe: https://bugreports.qt.io/browse/QTBUG-59010 – frans
Gut. Hoffentlich bekommen Sie bald eine Antwort. Ich empfehle Ihnen, einen MCVE in Ihren Qt-Fehlerbericht zu posten. Sie sehen schneller auf Probleme, wenn Sie dies tun. Viel Glück. – jpo38