Jetzt mal noch die Info, wie man externe so-Files aktuell einbinden kann, wenn man Bundles benutzt. Ich habe die Libraries jetzt in folgende Pfade gesteckt:
-
AV-Player
- 32-Bit-so-files -> library\lib\armeabi-v7a\
- 64-Bit-so-files -> library\lib\arm64-v8a\
- OpenSSL
- 32-Bit-so-files -> library\lib\armeabi-v7a\
- 64-Bit-so-files -> llibrary\lib\arm64-v8a\
Das Problem hier ist, dass je nach Device die Libraries in unterschiedlichen Pfaden gesucht werden. Lösung ist für mich jetzt, dass ich diese Pfade hintereinander durchprobiere, wobei dies je nach Komponente unterschiedlich geht. Dies ist deutlich platzsparender als die Lösung vom 29. Dez 2019 11:10, wo die Libraries für Android-32 auch unnötigerweise die 64-bit-Versionen enthielten und umgekehrt.
Open-SSL:
Delphi-Quellcode:
{$IFDEF ANDROID}
IdOpenSSLSetLibPath(String.Empty);
IdSSLOpenSSLHeaders.Load();
error:=IdSSLOpenSSLHeaders.WhichFailedToLoad();
if (length(error)>0) then
begin
IdOpenSSLSetLibPath(IncludeTrailingPathDelimiter(TPath.GetLibraryPath));
IdSSLOpenSSLHeaders.Load();
error:=IdSSLOpenSSLHeaders.WhichFailedToLoad();
if (length(error)>0) then
begin
IdOpenSSLSetLibPath(IncludeTrailingPathDelimiter(TPath.GetDocumentsPath));
IdSSLOpenSSLHeaders.Load();
log.d('SSL-Version(3): '+OpenSSLVersion);
error:=IdSSLOpenSSLHeaders.WhichFailedToLoad();
if (length(error)>0) then
begin
log.d('SSL-Errors: '+error);
end;
end else begin
log.d('SSL-Version(2): '+OpenSSLVersion);
end;
end else begin
log.d('SSL-Version(1): '+OpenSSLVersion);
end;
{$ENDIF}
AV-Player (
http://www.flashavconverter.com/cont...hi-component):
Delphi-Quellcode:
{$IFDEF ANDROID}
try
avlib.FFMPEG_DLL_PATH:=string.Empty;
avPlayerVideo:=TAVPlayer.Create(mainForm);
except on E:
Exception do
begin
avlib.FFMPEG_DLL_PATH:=IncludeTrailingPathDelimiter(TPath.GetLibraryPath);
avPlayerVideo:=TAVPlayer.Create(mainForm);
end;
end;
{$ENDIF}
Ich bin da mit EMBT noch dran (
https://quality.embarcadero.com/browse/RSP-27336), wobei die Hauptkommunikation via E-Mail läuft.