Einige Informationen:
- Wenn ich das APK für arm64 erstelle, funktioniert meine App einwandfrei auf arm64-Geräten.
=> Verwendetes Kit: „Qt 6.10.1 für Android arm64-v8a“
=> APK Inhalt des Ordners „lib“:
lib\ arm64-v8a\libMyAppName_arm64-v8a.so
lib\ arm64-v8a\libplugins_iconengines_qsvgicon_arm64-v8a.so
lib\ arm64-v8a\libplugins_imageformats_qgif_arm64-v8a.so
[...]
lib\ arm64-v8a\libqml_QtQml_Models_modelsplugin_arm64-v8a.so
[...]
lib\ arm64-v8a\libQt6Core_arm64-v8a.so
- Wenn ich das APK für armv7 erstelle, funktioniert meine App sowohl auf arm64- als auch auf armv7-Geräten einwandfrei.
=> Verwendetes Kit: „Qt 6.10.1 für Android armeabi-v7a“
=> Inhalt des APK-Ordners „lib“:
lib\armeabi-v7a\libMyAppName_armeabi-v7a.so
lib\armeabi-v7a\libplugins_iconengines_qsvgicon_armeabi-v7a.so
lib\armeabi-v7a\libplugins_imageformats_qgif_armeabi-v7a.so
[...]
lib\armeabi-v7a\libqml_QtQml_Models_modelsplugin_armeabi-v7a.so
[...]
lib\armeabi-v7a\libQt6Core_armeabi-v7a.so
- Ich habe versucht, ein Multi-ABI-APK zu erstellen, indem ich das arm64-APK genommen und den armv7-Lib-Abschnitt darin kopiert habe.
Die App funktioniert gut auf arm64-Geräten, aber auf armv7-Geräten es stürzt beim Start ab.
=> Absturzprotokoll:
FATAL EXCEPTION: main
Prozess: com.MyCompany.MyAppName, PID: 25768
java.lang.UnsatisfiedLinkError: Keine Implementierung gefunden für void org.qtproject.qt.android.QtNative.updateApplicationState(int) (versucht Java_org_qtproject_qt_android_QtNative_updateApplicationState und Java_org_qtproject_qt_android_QtNative_updateApplicationState__I)
at org.qtproject.qt.android.QtNative.updateApplicationState(Native Method)
at org.qtproject.qt.android.QtNative.setApplicationState(QtNative.java:247)
bei org.qtproject.qt.android.QtActivityBase.onResume(QtActivityBase.java:150)
bei android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1454)
bei android.app.Activity.performResume(Activity.java:8103)
bei android.app.ActivityThread.performResumeActivity(ActivityThread.java:4528)
bei android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4570)
bei android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52)
bei android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176)
bei android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
bei android.app.ActivityThread$H.handleMessage(ActivityThread.java:2216)
bei android.os.Handler.dispatchMessage(Handler.java:107)
bei android.os.Looper.loop(Looper.java:237)
bei android.app.ActivityThread.main(ActivityThread.java:7948)
bei java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
- Der Rat aller KI-Tools (CoPilot, Chat GPT, Claude AI) ist, dass beide Builds *.so-Bibliotheken ohne die Suffixe _armeabi-v7a oder _arm64-v8a enthalten müssen.
Code: Select all
android {
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
ANDROID_MIN_SDK_VERSION = "28" # (Android 9) is the min Android API Supported by Qt 6.x
ANDROID_TARGET_SDK_VERSION= "35" # (Android 15) is the min acceptable from Google Play (since 1/11/2025)
# This prevents Qt from adding the ABI suffix?
# (is not not working, probably an AI halucination)
CONFIG -= android_abi_suffix
# Force target name (redundant but ensures no suffix? - NOT!)
TARGET = myAppName
}
b. Ich habe versucht, die Suffixe durch Umbenennen der *.so-Dateien zu entfernen und dann das APK manuell auszurichten/signieren.
Jede Architektur, bei der ich die Suffixe entfernt habe, stürzt beim Start mit der Meldung „Ich kann libMyAppName_.so nicht finden“ ab.
- Ich habe versucht, ein Multi-ABI-APK oder ein Android App Bundle (*.aab) zu erstellen, indem ich das entsprechende *.pro festgelegt habe Dateieigenschaften in QtCreator.
=> PRO-Einstellung:
Code: Select all
ANDROID_ABIS = arm64-v8a armeabi-v7a
„Anwendungsbinärdatei kann im Build-Verzeichnis nicht gefunden werden [...]/build/arm64_v8a-Release/android-build//libs/armeabi-v7a/libMyAppName_armeabi-v7a.so“
Alle Ideen oder Hinweise sind sehr willkommen, da ich bereits am dritten Tag auf der Suche bin zu diesem Problem!
PS: Ich weiß, dass eine mögliche Problemumgehung darin besteht, beide APKs (arm64 und armv7) mit demselben Versionsnamen und unterschiedlichem Versionscode in Google Play hochzuladen, aber ich würde es lieber vermeiden, da dies nur für alte (bestehende) Apps akzeptabel ist und keine Lösung für zukünftige Apps darstellt.
Mobile version