Spec-Zone.ru › Qt 5.9

Добавление поддержки OpenSSL для Android

Пакет установки Qt поставляется с поддержкой OpenSSL, но библиотеки OpenSSL не входят в пакет из-за юридических ограничений в некоторых странах. Если ваше приложение зависит от OpenSSL, рассмотрите возможность добавления библиотек SSL в ваш пакет приложения (APK), так как целевое устройство может их иметь, а может и нет. Вы можете использовать статический метод QSslSocket::supportsSsl() для проверки поддержки SSL на целевом устройстве.

Следующие инструкции помогут вам собрать и добавить библиотеки OpenSSL в APK:

  1. Загрузите скрипт настройки для настройки среды разработки.

    Примечание: Убедитесь, что вы сохранили скрипт с окончанием строки Unix, если ваша среда разработки Unix или Linux.

  2. Внесите следующие изменения в скрипт настройки:
    • Установите соответствующие значения для переменных _ANDROID_EABI и _ANDROID_ARCH. Например, для сборки для 64-битной архитектуры ARM с использованием версии компилятора v4.9, установите значения aarch64-linux-android-4.9 и arch-arm64 соответственно на _ANDROID_EABI и _ANDROID_ARCH.
    • Добавьте windows-x86 или windows-x86_64 в список hosts в строке 107, если ваша среда разработки Windows.
    • Добавьте следующее после строки 128, чтобы собрать для 64-битной архитектуры ARM:
        arch-arm64)
      ANDROID_TOOLS="aarch64-linux-android-gcc aarch64-linux-android-ranlib aarch64-linux-android-ld"
          ;;
    • Добавьте следующее после строки 213, если _ANDROID_ARCH установлено в arch-arm64:
      if [ "$_ANDROID_ARCH" == "arch-arm64" ]; then
              export MACHINE=armv8
              export RELEASE=2.6.37
              export SYSTEM=android64
              export ARCH=arm
              export CROSS_COMPILE="aarch64-linux-android-"
      fi
    • Скомментируйте раздел FIPS, если он не используется, или определите переменную среды FIPS_SIG с расположением подписи FIPS.
  3. Определите переменную среды ANDROID_NDK_ROOT с расположением NDK.
  4. Предоставьте исполняемые права для скрипта настройки и запустите его:
    chmod a+x Setenv-android.sh
    . ./Setenv-android.sh

    После завершения скрипт выведет следующие данные о конфигурации в командную строку:

    ANDROID_NDK_ROOT: /home/user1/android-ndk-r10d
    ANDROID_ARCH: arch-arm64
    ANDROID_EABI: aarch64-linux-android-4.9
    ANDROID_API: android-21
    ANDROID_SYSROOT: /home/user1/android-ndk-r10d/platforms/android-21/arch-arm64
    ANDROID_TOOLCHAIN: /home/user1/android-ndk-r10d/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin
    FIPS_SIG:
    CROSS_COMPILE: aarch64-linux-androideabi-
    ANDROID_DEV: /home/user1/android-ndk-r10d/platforms/android-21/arch-arm64/usr
  5. Загрузите последние исходные коды OpenSSL с сайта http://www.openssl.org/source.
  6. Распакуйте исходные коды в папку и перейдите в эту папку с помощью командной строки.

    Примечание: Если ваша платформа разработки Windows, вам потребуется msys с perl v5.14 или более поздней версией для сборки OpenSSL.

  7. Настройте исходные коды OpenSSL для сборки под Android с помощью следующей команды:
    ./Configure shared android

    Примечание: Вы должны учесть включение/выключение функций SSL в зависимости от юридических ограничений в регионе, где доступно ваше приложение. Подробности о настраиваемых функциях см. в разделе настройки OpenSSL.

  8. Запустите make CALC_VERSIONS="SHLIB_COMPAT=; SHLIB_SOVER=" build_libs для сборки libcrypto и libssl общих библиотек, которые не имеют версий.

    Примечание: Android не загружает версиированных библиотек.

  9. Откройте свой проект Qt с помощью Qt Creator и обновите настройки "Сборка APK для Android", чтобы добавить libcrypto и libssl в качестве дополнительных библиотек для вашего проекта.
  10. Запустите свое приложение, чтобы увидеть его работу на устройстве.

Qt Creator собирает ваше приложение и создаёт пакет приложения (APK) с интегрированными в него библиотеками OpenSSL. После подготовки APK, он использует adb для развертывания APK на выбранном целевом устройстве и запуска приложения.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/opensslsupport.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API