Я могу использовать статические библиотеки OpenSSL (libcrypto.a и libssl.a) в своем приложении для iOS благодаря эта помощь. Теперь я также могу использовать динамические библиотеки OpenSSL (libcrypto.so и libssl.so) в своей версии приложения для Android благодаря эта информация. Скачал файлы для Android в файле OpenSSL_1.0.2g_Android.zip
с здесь. Я просто догадался и использовал файлы ARM (папка armeabi-v7a) вместо файлов Intel (папка x86), и это сработало на моем тестовом телефоне Android.
Мой вопрос: как мне сделать сборку Android, которая использует правильные файлы библиотеки на устройствах ARM, а также на Intel? Я не знаю, как развернуть оба набора файлов для этого. Ниже приведен фрагмент окна проекта, показывающий, куда я тестировал добавление второго файла библиотеки libcrytpo.so
для x86.
Но эта вторая libcrypto.so
не отображается в окне развертывания, остается только первая добавленная версия (версия ARM).
Я надеялся, что смогу как-то использовать директивы компилятора, но, может быть, мне просто нужно всего 2 независимых проекта? Один создан для Android ARM, а другой для Android x86? Кроме того, все, что мне нужно в моем коде, — это IdHTTP1->Get()
, так что, может быть, это способ, которым я могу использовать встроенный форк BoringSSL? Если да, то как?
русь
C++Builder 10.3 Версия 26.0.33219.4899
RAD Studio не поддерживает создание приложений Android для Intel, только для ARM, поэтому даже не беспокойтесь о попытках использовать библиотеки x86 на Android.
Кроме того, Indy не поддерживает BoringSSL в это время.
Реми — я купил планшет на базе Intel (Nuvision Solo 8), и мое приложение, созданное с помощью файлов ARM Indy (libcrypto.so
и libssl.so
), работало нормально! Похоже, libhoudini
правильно переводит инструкции ARM для процессора Intel. Таким образом, хотя RAD Studio не поддерживает сборку Intel, сборка ARM будет работать нормально. Единственная функция Indy, которую я сейчас использую, — это IdHTTP1->Get(temp)
, где temp
— это строка с полным URL-адресом, начинающимся с https
. Примечание. Процессор — X86 Genuine Intel (R) CPU @ 728
согласно SysCheck.
Спасибо, Реми. Я думаю, что ARM в любом случае покрывает> 95% устройств Android. Я только что нашел эта ссылка Embarcadero, в котором говорится, что устройства Intel Android (KitKat и выше) включают библиотеку эмуляции под названием
libhoudini
. Это библиотека перевода, автоматически вызываемая ОС, позволяющая процессору Intel интерпретировать и выполнять двоичные файлы, скомпилированные для процессора ARM. Также говорится: «Приложения FireMonkey обычно совместимы с библиотекойlibhoudini
». Я могу попытаться найти Intel Android и проверить это.