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

На андроиде приложение вылетает при вызове IdIMAP4.Connect()


Sashar333

Вопрос

Здравствуйте!.Delphi 10.2. Android 6 (Xiaomi Redmi note 4)

программирую раз в год, уровень языка минимальный, наверно.

код:

procedure TForm1.FormCreate(Sender: TObject);
begin
{$IFDEF MSWINDOWS}
pflog:='log.bas';
pfmem:='mem.mem';
pfprod:='prod.txt';
pfpost:='post.txt';
{$ELSE} {$IFDEF IOS}
//код для мобильной платформы iOS
{$ELSE} {$IFDEF ANDROID}
pflog:=Tpath.GetDocumentsPath+pathdelim+'log.bas';
pfmem:=Tpath.GetDocumentsPath+pathdelim+'mem.mem';
pfprod:=Tpath.GetDocumentsPath+pathdelim+'prod.txt';
pfpost:=Tpath.GetDocumentsPath+pathdelim+'post.txt';
{$ENDIF}
{$ENDIF}
{$ENDIF}

memo1.Text:='';
if not(fileexists(pfmem)) then memo1.Lines.SaveToFile(pfmem);
memo1.Lines.LoadFromFile(pfmem);
if memo1.Lines.Count=0 then memo1.Lines.Add('01.01.0001');
label1.Text:=memo1.Lines[0];
IdIMAP41.Connect(); - тут программа вылетает
//ComboBox1.Items.LoadFromFile(pfprod);
//ComboBox2.Items.LoadFromFile(pfpost);
//loadlist;
end;

Задача проста: найти письмо и скачать вложение, для дальнейшей обработки.

При запуске на Windows 8 все работает нормально, после установки apk и запуска на телефоне программа вылетает при IdIMAP41.Connect()

Менял на pop3 тоже самое

Подскажите пожалуйста в чем может быть проблема? Может есть другие варианты для загрузки почты?

Заранее спасибо!

 

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

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

  • 0
1 час назад, haword сказал:

ssl на инди как мне помниться нерабочий. ищи другие компоненты

И да и нет.
SSL который шел в комплекте с Indi - не работает под Android (под iOS если не ошибаюсь тоже, но не уверен).

Решение для андроида - добавить в проект перекомпилированные библиотеки (libcrypto.so и libssl.so)
После этого ssl работает.

Мы пошли другим путем - перешли на использование TNet* компонентов.
SSL работает из коробки под Android и iOS.

Ссылка на комментарий
  • 0
1 час назад, Barbanel сказал:

Мы пошли другим путем - перешли на использование TNet* компонентов.
SSL работает из коробки под Android и iOS.

Интересно, а как Вы читаете и отправляете письма с помощью  TNet* компонентов? Просто интересно стало. Например, получить на mail.ru список не прочитанных писем, прочитать  "Темы" письма, скачать вложения.... на indy это возможно...

Ссылка на комментарий
  • 0
1 час назад, Barbanel сказал:

Решение для андроида - добавить в проект перекомпилированные библиотеки (libcrypto.so и libssl.so)
После этого ssl работает.

как это делается? перекомпилирование...

библиотеки статические скачал с сайта indy с расширением "a"  (libcrypto.a и libssl.a)

и, видимо не статические, библиотеки с расширение "so" (libcrypto.so и libssl.so)

что значит перекомпилировать?

и как их подключить к проекту?

 

Ссылка на комментарий
  • 0
8 часов назад, Barbanel сказал:

SSL который шел в комплекте с Indi - не работает под Android (под iOS если не ошибаюсь тоже, но не уверен).

вопрос был про андроид про это и написал

6 часов назад, Sashar333 сказал:

как это делается? перекомпилирование...

библиотеки статические скачал с сайта indy с расширением "a"  (libcrypto.a и libssl.a)

и, видимо не статические, библиотеки с расширение "so" (libcrypto.so и libssl.so)

что значит перекомпилировать?

и как их подключить к проекту?

 

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Securing_Indy_Network_Connections но лучше не используй 

Лучше не использовать сторонние либы ибо можно воткнуться на несовместимость где ни будь на каком ни будь аппарате.

Изменено пользователем haword
Ссылка на комментарий
  • 0

на сколько я понял и сделал так:

1. добавил в Unit1.pas в USES: IdSSLOpenSSLHeaders

2. добавил в Project1.dpr в USES самым первым: System.StartUpCopy

3. добавил в Deployment Project1 два файла: libcrypto.so и libssl.so

4. изменил в Deployment Project1 для фалов Remote Path: .\assets\internal

5. добавил в FormCreate, в самом начале: IdOpenSSLSetLibPath(TPath.GetDocumentsPath);

 

но все так же вылетает...

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

единственное что файлы libcrypto.so и libssl.so пришлось скачать с (http://indy.fulgan.com/SSL/?

 

пробовал разные скачивать

так как ссылка из темы ([DELPHI FMX Android] [6.0] Не удается загрузить SSL библиотеку)

у меня не открывается

image.png

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

в общем получилось на другом компе подключить телефон и запустить отладку через делфи

при прохождении  пишет Project1.apk raised excepyion class EidOSSLCoulNotLoadSSLlibrary with message "Could not load SSL library"

и останавливается в idSSLOpenSSl тут:

constructor TIdSSLContext.Create;
begin
  inherited Create;
  //an exception here probably means that you are using the wrong version
  //of the openssl libraries. refer to comments at the top of this file.
  if not LoadOpenSSLLibrary then begin
    raise EIdOSSLCouldNotLoadSSLLibrary.Create(RSOSSLCouldNotLoadSSLLibrary);
  end;
  fVerifyMode := [];
  fMode := sslmUnassigned;
  fSessionId := 1;
end;
 

я так понял проблема в файлах libcrypto.so и libssl

может есть у кого подсказка где правильные скачать или как их подобрать?

спасибо

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

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

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

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

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

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

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

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

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

×
×
  • Создать...