• 0
Kitty

Failed to load libssl.so

Вопросы

Приложение имеет возможность отправлять письма. Протокол OpenSSL Indy. Для этого используются библиотечные файлы libcrypto.so и libssl.so
Файлы добавлены в деплоймент и указан путь, где они лежат.

#include <System.StartupCopy.hpp>
#include <IdSSLOpenSSLHeaders.hpp>

__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{
  IdOpenSSLSetLibPath(System::Ioutils::TPath::GetDocumentsPath());
}

//нажатие на кнопку
try
      {
//код***********************


		  IdSMTP1->Connect();
		  try {
			 IdSMTP1->Send(IdMessage1);
		  }
		  __finally {
			 IdSMTP1->Disconnect();
		  }

		  ShowMessage(L"Письмо отправлено.");
	   }
	   catch (const EIdOSSLCouldNotLoadSSLLibrary &)
		  {
//для планшета Samsung GT-P5200		   
String ErMessage = WhichFailedToLoad();
		   String path = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetSharedDownloadsPath(), L"error.ini");
		   if(FileExists(path))
			 {
              std::unique_ptr<TIniFile> FileINI(new TIniFile(path));
			  FileINI->WriteString(L"ERROR",L"error",ErMessage);
              ShowMessage(L"Ошибка записана в файл error.ini");
             }
		   else
			   {
				ShowMessage(L"Не найден файл error.ini");
               }

		  }
       catch (const Exception &E)
		  {
           String MES = L"Ошибка отправки. Проверти интернет. " + E.Message;
		   ShowMessage(MES);
		  }

APK инсталлирован на телефоны и пару планшетов. Отправка писем исправно работает. Но есть один планшет Samsung GT-P5200, который не может загрузить библиотечный файл, и получаю на нем ошибку:
[ERROR]
error="Failed to load /data/data/com.embarcadero.Mikros/files/libssl.so."

Чтобы убедиться, что дело не в деплойменте делаю новые шаги:
1. Убираю файлі  libcrypto.so and libssl.so из деплоймент менеджера.
2. Вручную копирую эти два файла libcrypto.so и libssl.so  на два планшета в их папки Download.
3. Изменяю код, чтобы была указана папка Download:
IdOpenSSLSetLibPath(System::Ioutils::TPath::GetSharedDownloadsPath());
4. Инсталлирую полученный  APK на планшеты PIPO M7 pro андроид 4.4.2  и Samsung GT-P5200 андроид 4.4.2.
5. Посылаю Indy email из приложения.

На PIPO M7 pro все работает как надо.

На Samsung GT-P5200 снова ошибка загрузки:
[ERROR]
error="Failed to load /storage/emulated/0/Download/libssl.so."

Таким образом планшет  Samsung GT-P5200 андроид 4.4.2 никак не может загрузить libssl.so :(
Что можете посоветовать?
Спасибо.


P.S. Ответ разработчика Indy не дает подсказки, а что же сделать чтобы заработало:

My guess, and this is just a guess, is that the .so file itself is probably not compatible with that tablet and/or OS version. Or maybe it is linked to a dependent .so file that it cannot find.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

39 ответов на этот вопрос

  • 0
12 минут назад, Kitty сказал:

Нет, на интел планшете не хочет отправлять письма. :(

Что по этому поводу говорит Remy Lebeau?

Временно имеется планшет с Intel Atom (Androd 5.1.1). Можете прислать тестовую программу, проверю.

Изменено пользователем Rusland

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

печалька :(

ошибка та же? если сборке не указать APP_ABI := x86 собирается четыре папки: arm64-v8a, mips64, x86 и x86-64

arm и x86-64 вот libs.zip

попробовать библиотеки 86-64 и для чистоты эксперимента arm из этой сборки, mips думаю не нужен

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

теперь кстати можно определить запущено приложение на интеле или нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
20 часов назад, Камышев Александр сказал:

печалька :(

ошибка та же? если сборке не указать APP_ABI := x86 собирается четыре папки: arm64-v8a, mips64, x86 и x86-64

arm и x86-64 вот libs.zip

попробовать библиотеки 86-64 и для чистоты эксперимента arm из этой сборки, mips думаю не нужен

Мне попался другой планшет от других людей и тоже марка GT-P5200. Попробовала на нем разные версии *.so файлов. При всех разных версиях этих файлов, в ini получаю странную и не информативную ошибку:

[ERROR]
error="F

Что значит буква F без закрывающих кавычек не понятно...

Видимо начало предложения Failed to load...

 

Изменено пользователем Kitty

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

видимо не судьба им быть вместе... приложению и galaxy tab

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

А как еще можно организовать отправку письма если это galaxy tab, если инди с этим не справляется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
13 минут назад, Kitty сказал:

А как еще можно организовать отправку письма если это galaxy tab, если инди с этим не справляется?

Может быть так? (правда код на Delphi)

Изменено пользователем Rusland

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 29.09.2016 в 10:56, Kitty сказал:

Мне попался другой планшет от других людей и тоже марка GT-P5200. Попробовала на нем разные версии *.so файлов. При всех разных версиях этих файлов, в ini получаю странную и не информативную ошибку:

[ERROR]
error="F

Что значит буква F без закрывающих кавычек не понятно...

Видимо начало предложения Failed to load...

 

Проверил. Да, действительно обрезается текст (не понял почему). Чтобы это не происходило, добавьте текста в Error.ini:

Цитата

[ERROR]

error=12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789

тогда ошибка будет видна полностью.

Пробовал разные версии libcrypto.so и libssl.so (из этой темы в частности). Всегда выдает либо "Failed to load /data/data/com.embarcadero.Mikro/files/libssl.so.", либо "Failed to load /data/data/com.embarcadero.Mikro/files/libcrypto.so.". Думаю, надо искать нужную версию библиотек под intel

Изменено пользователем Rusland

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Если у вас аппарат рутован, то вы можете достать с него библиотеки libcrypto.so и libssl.so - они находятся в system/lib (или system/lib64). У меня root-а нет, поэтому я не могу их вытащить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Удалось вытащить библиотеки, передав их через Bluetooth.

Проверил с ними - выходит ошибка: "Failed to load /data/data/com.embarcadero.Mikro/files/libcrypto.so."

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Через интенты не удалось отправить письмо c вложением:

#include <FMX.Helpers.Android.hpp>

void __fastcall TFormServis::Button3Click(TObject *Sender)
{
 Button3->Enabled = false;
 Application->ProcessMessages();

   _di_JIntent intent;
   //intent = new TJIntent; // <-- erorr no viable overloaded '='
   intent = TJIntent::JavaClass->init();
   intent->setAction(TJIntent::JavaClass->ACTION_SENDTO);
   intent->setData(StrToJURI(L"mailto:" + String("lenailicheva@yandex.ru")));
   // or: intent = TJIntent::JavaClass->init(TJIntent::JavaClass->ACTION_SENDTO, StrToJURI(L"mailto:" + address));
   intent->setFlags(TJIntent::JavaClass->FLAG_ACTIVITY_NEW_TASK);
   intent->putExtra(TJIntent::JavaClass->EXTRA_SUBJECT, StringToJString(L"Тест"));
   intent->setType(StringToJString(L"message/rfc822"));

   String path =
   System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), L"mikros.s3db");

   if(FileExists(path))
   {
    _di_JFile AttachmentFile = TJFile::JavaClass->init(StringToJString(path));
    _di_Jnet_Uri Uri = TJnet_Uri::JavaClass->fromFile(AttachmentFile);
    intent->putExtra(TJIntent::JavaClass->EXTRA_STREAM, TJParcelable::Wrap(((_di_ILocalObject)Uri)->GetObjectID()));
   }

   SharedActivity()->startActivity(intent);
   Button3->Enabled = true;
}

ERROR:

android.content.ActivityNotFoundExcrption: No Activity found to handle Intent
{act=abdroid.intent.action.SendTO typ=message/rfc822 flg=0x10000000(has extras)}.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

А без вложения все нормально?

Может быть надо 

intent->setType(StringToJString(L"vnd.android.cursor.dir/email"));

как указано здесь?

Изменено пользователем Rusland

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Владельцам galaxy tab нужно не письма отправлять, а огнестойкую коробку и перчатки, что бы сложить его туда и забетонировать от греха подальше :D

сори оффтоп

Изменено пользователем Камышев Александр

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу