Qt for Mac on Mac或Linux build“无法检测到ndk工具链......”

时间:2013-09-11 20:15:47

标签: linux macos qt android-ndk

我刚刚安装了SDKNDKJDK。 当我输入终端时:

  

moroz @ moroz:〜/ qt / qt5 $ ./configure -developer-build -opensource -confirm-license -xplatform android-g++ -nomake tests -nomake examples -android-ndk android-ndk-r9/ -android-sdk android-sdk-linux/ -android-ndk-host linux-x86_64 -android-toolchain-version 4.8 -skip qttranslations -skip qtwebkit -skip qtserialport -skip qtwebkit-examples

然后

  

moroz @ moroz:〜/ qt / qt5 $ /home/moroz/qt/qt5/qtbase/configure -top-level -developer-build -opensource -confirm-license -xplatform android-g++ -nomake tests -nomake examples -android-ndk android-ndk-r9/ -android-sdk android-sdk-linux/ -android-ndk-host linux-x86_64 -android-toolchain-version 4.8 -skip qttranslations -skip qtwebkit -skip qtserialport -skip qtwebkit-examples

我遇到了以下错误:

  

Can not detect Android NDK toolchain. Please use -android-toolchain-version to specify

Mac和Ubuntu上也有相同的消息!

4 个答案:

答案 0 :(得分:1)

在Mac上

你应该使用

-android-ndk-host darwin-x86_64

它在ndkfolder / prebuilt中解析-android-ndk-host /(我有darwin-x86_x64,android-arm,android-mips,android-x86,常用)

答案 1 :(得分:0)

i7中存在问题。它将处理器架构显示为i386(32位),但硬件显示为x84_64(64位)。

$ uname -p
i386

$ uname -m
x86_64

-m打印机器硬件名称。

-p打印机器处理器体系结构名称。

必须破解qtbase / configure文件才能返回x86_64

 macx-g++-64)
            PLATFORM=macx-g++
            NATIVE_64_ARCH=
            case `uname -p` in
            i386) NATIVE_64_ARCH="x86_64" ;;
            powerpc) NATIVE_64_ARCH="ppc64" ;;
            *)   echo "WARNING: Can't detect CPU architecture for macx-g++-64" ;;
            esac
            if [ ! -z "$NATIVE_64_ARCH" ]; then
                QTCONFIG_CONFIG="$QTCONFIG_CONFIG $NATIVE_64_ARCH"
            fi
            ;;
        esac

另一个解决方案是下载32位Android NDK并使用darwin-x86作为主机名。

答案 2 :(得分:0)

我是我的情况我指定了ndk的相对路径 - 相同的错误,在提供完整路径后,它就完成了它的工作。

答案 3 :(得分:0)

  • 在Android 5.0及更低版本上,QSslSocket将使用Android系统的libssl.so和libcrypto.ssl
  • 在Android> = 6.0上,您的应用必须包含其自己的libssl.so和libcrypto.ssl
  • 由于某些国家/地区的法律限制,OpenSSL不属于Qt安装。
  • 您必须根据应用程序可用地区的法律限制,考虑启用/禁用SSL功能。
  • See the SSL configure options for details about the configurable features
  • 请勿使用您发现的有关Internet的内置OpenSSL库。

1)如何在macOS上构建OpenSSL:

要使用 macOS 主机为arm,arm-v7a和x86构建OpenSSL Android库,如果您使用 Android NDK r10e ,此脚本将非常有用:

**将库复制到Qt应用程序的项目文件夹:**

platform/
└── android
    └── lib
        └── openssl
            ├── README.md
            ├── android-openssl-vsts.webloc
            ├── arch-armeabi-v7a
            │   ├── libcrypto.a
            │   ├── libcrypto.so
            │   ├── libssl.a
            │   └── libssl.so
            └── arch-x86
                ├── libcrypto.a
                ├── libcrypto.so
                ├── libssl.a
                └── libssl.so

2)将Qt yourapp.pro项目文件添加到:

android {
    # Android >= 6.0 requires apps to install their own libcrypto.so and libssl.so
    # https://subsite.visualstudio.com/DefaultCollection/android-openssl
    equals(ANDROID_TARGET_ARCH, armeabi-v7a) {
        ANDROID_EXTRA_LIBS += $$files($${PWD}/platform/android/lib/openssl/arch-armeabi-v7a/*.so)
    }
    equals(ANDROID_TARGET_ARCH, x86)  {
        ANDROID_EXTRA_LIBS += $$files($${PWD}/platform/android/lib/openssl/arch-x86/*.so)
    }
}

我浪费了很多时间试图在Linux和macOS上构建OpenSLL,直到找到该脚本,并弄清楚我需要使用Android NDK r10e或更早版本进行构建。

Qt Adding OpenSSL Support for Android指南对我不起作用。但是,如果我已还原到NDK r10e ,它可能会起作用。

我希望这可以节省一些时间。