Qt6.10构建多ABI Android APK/AAB失败的问题求助
Qt6.10构建多ABI Android APK/AAB失败的问题求助
各位大佬,我卡在Qt6.10构建多ABI Android APK的问题上已经3天了,试了各种方法都没解决,想请教下有没有遇到过类似问题的朋友给点思路?
先跟大家说下我目前的测试情况:
1. 单独构建单一ABI的情况(均正常)
构建arm64-v8a APK
- 使用Kit:
Qt 6.10.1 for Android arm64-v8a - 生成的APK的
lib目录仅包含arm64-v8a架构的库文件,示例如下:lib/arm64-v8a/libMyAppName_arm64-v8a.so lib/arm64-v8a/libplugins_iconengines_qsvgicon_arm64-v8a.so ... lib/arm64-v8a/libQt6Core_arm64-v8a.so - 在arm64设备上运行完全正常
构建armeabi-v7a APK
- 使用Kit:
Qt 6.10.1 for Android armeabi-v7a - 生成的APK的
lib目录仅包含armeabi-v7a架构的库文件,示例如下:lib/armeabi-v7a/libMyAppName_armeabi-v7a.so lib/armeabi-v7a/libplugins_iconengines_qsvgicon_armeabi-v7a.so ... lib/armeabi-v7a/libQt6Core_armeabi-v7a.so - 意外发现:这个APK在arm64和armv7设备上都能正常运行,没有任何兼容性问题
2. 手动合并APK的尝试(失败)
我想着手动合并两个单一ABI的APK,操作步骤是:解压arm64的APK,把armv7的lib/armeabi-v7a目录整个复制进去,然后重新打包签名。
结果:
- arm64设备运行正常
- armv7设备启动直接崩溃,崩溃日志如下:
FATAL EXCEPTION: main Process: com.MyCompany.MyAppName, PID: 25768 java.lang.UnsatisfiedLinkError: No implementation found for void org.qtproject.qt.android.QtNative.updateApplicationState(int) (tried Java_org_qtproject_qt_android_QtNative_updateApplicationState and 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) at org.qtproject.qt.android.QtActivityBase.onResume(QtActivityBase.java:150) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1454) at android.app.Activity.performResume(Activity.java:8103) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4528) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4570) at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:52) at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:176) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2216) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:237) at android.app.ActivityThread.main(ActivityThread.java:7948) at 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)
3. 通过pro文件配置多ABI的尝试(失败)
我想着应该用Qt官方支持的方式构建,于是在pro文件中配置多ABI:
用arm64的Kit,添加如下配置:
android { ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android ANDROID_MIN_SDK_VERSION = "28" ANDROID_TARGET_SDK_VERSION= "35" # 按照AI建议尝试去掉ABI后缀,无效果 CONFIG -= android_abi_suffix # 强制指定目标文件名,也无效果 TARGET = myAppName # 配置多ABI ANDROID_ABIS = arm64-v8a armeabi-v7a }
结果不管是构建APK还是AAB,都会出现以下错误:
Cannot find application binary in build dir [...]/build/arm64_v8a-Release/android-build//libs/armeabi-v7a/libMyAppName_armeabi-v7a.so
4. 已知临时方案,但不想依赖
我知道可以将两个单一ABI的APK(版本名相同、版本号不同)上传到Google Play,但这个方案仅Google仅允许现有旧应用使用,未来新应用可能不再支持,而且总觉得这不是正确的解决路径,所以不想依赖这个临时方案。
有没有大佬知道问题出在哪?或者有没有正确构建Qt6.10多ABI Android APK的方法?感激不尽!




