Перейти к содержанию
Fire Monkey от А до Я
  • 0

Failed to load libssl.so


Kitty

Вопрос

Приложение имеет возможность отправлять письма. Протокол 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.

Ссылка на комментарий

Рекомендуемые сообщения

  • 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
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
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

Через интенты не удалось отправить письмо 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

сори оффтоп

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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