QT for Android 使用arm64_v8a编译器

一.Qt for Android

Qt 早期一直支持 Android armeabi-v7a的编译器.它实际也能在较新的arm64 v8a运行.(现在新手机几乎都是这个) ,我查看一下,即使是几年的前红米4也是


QT for Android 使用arm64_v8a编译器_第1张图片
image.png

也是是说,采用Qt arm54_v8a ,绝大部分手机没问题.

在之前很多app在v7a运行起来问题不大.让我下决心采用 v8a的原因运行出现这个闪退

libc: Fatal signal 4 (SIGILL), code 7, fault addr xxx

很多人提示是NDK采用的CPU架构不对,所以出问题,于采用v8a

二.准备工作

QT 更新到 5.13 .原来的5.12.x版本编译有错误

NDK更新, 推荐 r20. 在5.12.x能使用r17b会报错
https://developer.android.google.cn/ndk/downloads/
https://dl.google.com/android/repository/android-ndk-r20-darwin-x86_64.zip

调整qmake.conf.

主要是因为Qt 5.13.x for Android有一个bug.
修改如下两个文件
Qt/5.13.0/android_armv7/mkspecs/android-clang/qmake.conf
Qt/5.13.0/android_arm64_v8a/mkspecs/android-clang/qmake.conf

在48后面补上 -nostdlib++

 ANDROID_CXX_STL_LIBS = $$ANDROID_SOURCES_CXX_STL_LIBDIR/libc+.so.$$replace(ANDROID_PLATFORM, "android-", "") -nostdlib++

否则会报错

/Users/pro/bin/android-ndk-r20/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: cannot find -lc++
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

选用后按v7a编译,运行即可

三.QtCreator配置

在device 配置选择新的NDK,并重启QtCreator


QT for Android 使用arm64_v8a编译器_第2张图片
NDK

你可能感兴趣的:(QT for Android 使用arm64_v8a编译器)