![]() |
Android M und SSL
Hallo zusammen
Bin jetzt seit ein paar Monate hier ein stiller Mitleser. Ich habe ein Problem mit Delphi Seattle. Da mein Webservice mit XE8 auf Android M gar nicht funktioniert hat, habe ich mal Seattle installiert. Jetzt bekomm ich beim Aufruf allerdings die Melding "SSL.-Bibliothek konnte nicht geladen werden.". Ich weiss, dass Google für Android M von OpenSSL auf BoringSSL gewechselt ist. Allerdings weiss ich nicht, wie ich das jetzt ändern kann, oder was ich ändern müsste.. Ich benutze für den Aufruf des Services nur THTTPRIO als Komponent. Und laut dem docwiki müsste es die SSL-Libs bei Android ja immer automatisch linken oder? Code zum Aufrufen (Hat mit XE8+Android5 funktioniert):
Code:
Normalerweise konnte ich mich mit der Such-Funktion begnügen, aber zu Seattle findet man leider noch nicht vieles...
{$IF DEFINED(ANDROID) OR DEFINED(iOS)}
cn.HTTPRIO.WSDLLocation := TPath.Combine(TPath.GetDocumentsPath, 'wsdlDatei.wsdl'); cn.HTTPRIO.Service := 'Service';cn.HTTPRIO.Port := 'ServicePort'; {$ENDIF} iTel := cn.HTTPRIO as ServiceList; Log := login.Create; Log.user := username; Log.password := password; Log.domain := domain; sess := sessionHeader.Create; sess.sessionId := iTel.login(log).sessionId; (iTel as ISOAPHeaders).Send(sess); getA := GetServiceList.Create; iTel.GetServiceList(getA); (Und falls ihr absoluten Blödsinn in meinem Code erkennt, wär ich sehr dankbar wenn ihr mich darauf hinweist ;) ) Grüsse |
AW: Android M und SSL
Bzw. könnte mir wer bestätigen der es vielleicht schon selber gemacht hat, dass Webservice-Aufruf über HTTPS auf Android 6.0 funktioniert?
Zitat:
Edit: Der Fehler passiert beim ersten Connecten, also bei iTel.login(log).sessionId; |
AW: Android M und SSL
Wir haben das bei uns so gelöst, dass wir die libcrypto.so und libssl.so von einer Android-Version < 6 einfach bei der App mit ausliefern und in der Projektdatei den Lib-Pfad auf unser lokales Verzeichnis setzen, sofern Android >= 6 vorhanden ist:
Code:
Wir verwenden allerdings noch Indy, da die "nativen" FMX-Komponenten für SSL auf iOS und Android quasi unbrauchbar sind.
{$IF Defined(ANDROID) and Defined(CPUARM)}
if (TOSVersion.Platform = pfAndroid) and (TOSVersion.Major >= 6) then IdOpenSSLSetLibPath( TPath.GetLibraryPath ) else IdOpenSSLSetLibPath('/system/lib/'); {$ENDIF} |
AW: Android M und SSL
Vielen Dank für deine Antwort!
Noch zwei Fragen hätt ich aber noch. libcrypto.a und libssl.a kenn ich - halt für iOS. Und konnte auf die Schnelle die .so-Dateien nicht finden, wo würd ich die herbekommen? Und als zweites, in dem Fall habt ihr nicht THTTPRIO benutzt? Oder weiterhin THTTPRIO verwendet und nur die SSL-Libs "verändert" (so wie oben in deinem Bsp.) Was für Indy Komponenten denn? Ich konnte leider nicht sehr viel finden, ausser IdHTTP, und ich weiss nicht recht ob das das ist, was ich brauche. Gibt's irgendwo Material mit dem auch n Anfänger was anfangen kann? Tutorials, oder vielleicht Code-Schnipsel? Wär nett :) Aber so hat man zumindest schon mal überhaupt eine Lösung, danke. Grüsse |
AW: Android M und SSL
Wir haben die .so-Dateien direkt von einem Android-Gerät, müssten eigentlich unter /system/lib zu finden sein - vermutlich wird dazu Root benötigt. Die werden aber anders als bei iOS nicht mit einkompiliert sondern dynamisch geladen, müssen also über das Deployment mit ausgeliefert werden.
Die Indy-Komponenten sind diese IdXXX-Geschichten, die nativen THTTPRIO-Geschichten gibt es meines Wissens erst seit XE8. Hier gibts u.a. ein Tutorial: ![]() |
AW: Android M und SSL
Ach, wir kamen - bisher - gut mit denen aus, hehe.
Ich wollte zwar mit den Indy-Komponenten mal anfangen (was ich in Zukunft auch tun werde), aber habe eine Lösung für die "nativen" Komponenten gefunden: (Wusst nicht, dass man das bei denen auch einstellen kann)
Code:
Plus den "alten" SSL-Dateien.
cn.HTTPRIO.HTTPWebNode.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(cn.HTTPRIO);
So funktionierts vorübergehend, nochmals vielen Dank für deine Hilfe :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz