Добавление поддержки OpenSSL для Android
Пакет установки Qt поставляется с поддержкой OpenSSL, но библиотеки OpenSSL не входят в пакет из-за юридических ограничений в некоторых странах. Если ваше приложение зависит от OpenSSL, рассмотрите возможность добавления библиотек SSL в ваш пакет приложения (APK), так как целевое устройство может их иметь, а может и нет. Вы можете использовать статический метод QSslSocket::supportsSsl() для проверки поддержки SSL на целевом устройстве.
Следующие инструкции помогут вам собрать и добавить библиотеки OpenSSL в APK:
- Загрузите скрипт настройки для настройки среды разработки.
Примечание: Убедитесь, что вы сохранили скрипт с окончанием строки Unix, если ваша среда разработки Unix или Linux.
- Внесите следующие изменения в скрипт настройки:
- Установите соответствующие значения для переменных
_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.
- Установите соответствующие значения для переменных
- Определите переменную среды
ANDROID_NDK_ROOTс расположением NDK. - Предоставьте исполняемые права для скрипта настройки и запустите его:
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
- Загрузите последние исходные коды OpenSSL с сайта http://www.openssl.org/source.
- Распакуйте исходные коды в папку и перейдите в эту папку с помощью командной строки.
Примечание: Если ваша платформа разработки Windows, вам потребуется
msysсperlv5.14 или более поздней версией для сборки OpenSSL. - Настройте исходные коды OpenSSL для сборки под Android с помощью следующей команды:
./Configure shared android
Примечание: Вы должны учесть включение/выключение функций SSL в зависимости от юридических ограничений в регионе, где доступно ваше приложение. Подробности о настраиваемых функциях см. в разделе настройки OpenSSL.
- Запустите
make CALC_VERSIONS="SHLIB_COMPAT=; SHLIB_SOVER=" build_libsдля сборкиlibcryptoиlibsslобщих библиотек, которые не имеют версий.Примечание: Android не загружает версиированных библиотек.
- Откройте свой проект Qt с помощью Qt Creator и обновите настройки "Сборка APK для Android", чтобы добавить libcrypto и libssl в качестве дополнительных библиотек для вашего проекта.
- Запустите свое приложение, чтобы увидеть его работу на устройстве.
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