AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Wo müssen externe shared objects unter Android hin?
Thema durchsuchen
Ansicht
Themen-Optionen

Wo müssen externe shared objects unter Android hin?

Ein Thema von TurboMagic · begonnen am 14. Aug 2020 · letzter Beitrag vom 15. Aug 2020
 
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
932 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Wo müssen externe shared objects unter Android hin?

  Alt 15. Aug 2020, 11:09
Bei Android muss man die so.Dateien normalerweise zweimal bereitstellen (32-bit und 64-bit):
- library\lib\arm64-v8a\
- library\lib\armeabi-v7a\

Es hängt aber am Ende vom Device (Android-Version) und auch von der Library ab, wo genau gesucht wird. Ich habe daher begleiten bei mir folgenden Code eingebaut, damit alle PreLaunch-Tests erfolgreich sind (sowohl bei Google als auch bei Amazon):

Für OpenSSL:
Delphi-Quellcode:
  IdSSLOpenSSLHeaders.Load();
  {$IFDEF ANDROID}     
     help2:=IdSSLOpenSSLHeaders.WhichFailedToLoad();
     if (length(help2)>0) then
     begin
       IdOpenSSLSetLibPath(IncludeTrailingPathDelimiter(TPath.GetLibraryPath));
       IdSSLOpenSSLHeaders.Load();
       help2:=IdSSLOpenSSLHeaders.WhichFailedToLoad();
       if (length(help2)>0) then
       begin
         IdOpenSSLSetLibPath(IncludeTrailingPathDelimiter(TPath.GetDocumentsPath));
         IdSSLOpenSSLHeaders.Load();
         mlog.info('SSL-Version(3): '+OpenSSLVersion);
         help2:=IdSSLOpenSSLHeaders.WhichFailedToLoad();
         if (length(help2)>0) then
         begin
           mlog.info('SSL-Errors: '+help2);
         end;
       end else begin
         mlog.info('SSL-Version(2): '+OpenSSLVersion);
       end;
     end else begin
       mlog.info('SSL-Version(1): '+OpenSSLVersion);
     end;
AV-Player (hier habe ich den Original-Code gepatch, wird aber wahrscheinlich auch in den Original-Code nach Test durch den Hersteller übergehen:
Delphi-Quellcode:
function MySafeLoadLibrary(ModuleName:string):HMODULE;
var
  Error: string;
  {$IF Defined(ANDROID)}
  function ShouldNativeLibrariesBeExtracted: Boolean;
  begin
    if TOSVersion.Check(6, 0) then
      Result := (TAndroidHelper.Context.getApplicationInfo.flags and TJApplicationInfo.JavaClass.FLAG_EXTRACT_NATIVE_LIBS) <> 0
    else
      Result := True;
  end;
  {$ENDIF}
begin
  {$IF Defined(ANDROID)}
  if ShouldNativeLibrariesBeExtracted then
    ModuleName := TPath.Combine(TPath.GetLibraryPath, ModuleName);
  {$ENDIF}
  Result := LoadLibrary(PChar(ModuleName));
  if Result = 0 then
  begin
    Error := string.Format('Could not load ''%s'' due to: %s', [ModuleName, string(UTF8String(dlerror))]);
    log.d('mySafeLoadLibrary: '+error);
    ShowMessage(Error);
    raise Exception.Create(Error);
  end;
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 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