• 0
Sashar333

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

Вопросы

Здравствуйте!.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 тоже самое

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

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

 

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


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

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

  • 0

443 тоже не  работает

пробовал 110, 993,995,25

на виндовс 993 работает

 

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


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

такие вот настройки в виндовсе работают...

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


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

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

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


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

как не рабочий если в windows работает!?

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


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

или может кто подскажет какие еще простые компоненты есть для работы с почтой на андройд и ios... 

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


Ссылка на сообщение
Поделиться на другие сайты
  • 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

Мы не читаем письма, мы используем только HTTPS-запросы.

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


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

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

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

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

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

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

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

 

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


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

https://stackoverflow.com/questions/37105600/error-could-not-load-ssl-library-on-android-with-tidhttp

Там все описано.
Если не разберетесь - задавайте вопросы, поможем.

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


Ссылка на сообщение
Поделиться на другие сайты
  • 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

Любую отладку под андроид стоит начинать с

adb.exe logcat  >1.txt

и смотреть где упало и почему. И делать выводы.
 

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


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

это слишком сложно для меня

там проблемы с драйвером, не хочет подключаться телефон 

разные usb драйвера пробовал ни в какую

 

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


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

рутуй телефон, и любой программой сними лог и глянь из-за чего вылет. что неужели нет рутованного телефона ни одного рядом? 

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


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

не ужели нет других вариантов кроме как ломать телефон?

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


Ссылка на сообщение
Поделиться на другие сайты
  • 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

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

спасибо

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


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

ВСЕ ЗАРАБОТАЛО!!!!

файлы libcrypto.so и libssl добавил не в тот deployment

вариант:

рабочий!

Всем большое спасибо!

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


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

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

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

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

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

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

Войти

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

Войти

  • Похожий контент

    • От Wovan2
      Доброе время суток.
      Борюсь с Indy 10 на FMX. Обмен данными между сервером и клиентом наладил. Все работает стабильно.
      Стал экспериментировать с разрывом связи. И тут программы ведут себя не очень понятно, особенно на клиенте. Если сервер не запушен. Клиент на команде IdTCPClient.Connect; закрывается. ???? Делаю обработки так
       
      procedure TfrmMainClient.TimerTimer(Sender: TObject); var  Server : string; begin  if not IdTCPClient.Connected   then    try     IdTCPClient.Connect;    except    on E : Exception do     lblInfo.Text := e.Message;    end;  Server := 'Сервер ' + IdTCPClient.Socket.Binding.PeerIP +            ':' + IntToStr(IdTCPClient.Socket.Binding.PeerPort);  if IdTCPClient.Connected   then    begin     lblInfo.Text := Server + ' подключен!';     lblInfo.TextSettings.FontColor := TAlphaColors.Green;    end   else    begin     lblInfo.Text := Server + ' не доступен!';     lblInfo.TextSettings.FontColor := TAlphaColors.Red;    end; end; Никаких сообщений не появляется. Программа подвисает вместе с Адроидом, потом тупо окно закрывается. Молча. Таймауты на клиенте выставил ConnectTimeOut = 5000; ReadTimeOut = 5000;
      В общем вопрос. Как правильно организовать на Indy управление соединением? Чтобы не тормозило, Была возможность переподключиться. 
      PS. Почему-то в Delphi 10.2 не могу найти компонент AntiFreeze. ????
  • Последние посетители   0 пользователей онлайн

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