Ist es Bibliotheken möglich, Speicher wie den Shared Memory in Linux zu teilen? (Die Shared-Memory-Funktion, die in System V und später in Linux übernommen wurde)
Beispiel: Wenn zwei Apps gleichzeitig arbeiten und beide die OkHttp-Bibliothek verwenden, wird die Bibliothek zweimal in den Speicher geladen?
Die gleiche Shared-Memory-Funktion ist immer noch in Android vorhanden und funktioniert mit integrierten Shared-Libraries wie OpenGL ES, wird jedoch nicht für Bibliotheken von Drittanbietern verwendet, wie Sie fragen. Jede App, die eine Bibliothek eines Drittanbieters verwendet, muss die Bibliothek in ihre APK-Datei aufnehmen. Dies sind dann keine gemeinsam genutzten Bibliotheken (in dem .so
Sinne): Sie sind nur doppelte Dateien, die möglicherweise denselben Code enthalten. (Normalerweise enthalten sie nicht denselben Code, da verschiedene Apps für verschiedene Versionen der Bibliothek erstellt wurden.)
Dies vermeidet mögliche Inkompatibilitäten oder Sicherheitsprobleme, die durch das Aktualisieren von Bibliotheken aus verschiedenen Apps verursacht werden. Inkompatibilitäten von gemeinsam genutzten Bibliotheken sind ein großes Problem in GNU/Linux-Systemen. Distributionen bemühen sich sehr, sie zu verhindern, indem sie verschiedene Kombinationen von Anwendungen und Bibliotheken testen, aber manchmal gehen sie trotzdem schief. Bei Android, wo niemand dafür verantwortlich ist, dass verschiedene Apps zusammenarbeiten, würde diese Art von Shared-Library-System dazu führen, dass Apps oft kaputt gehen, wenn eine Shared-Library aktualisiert wird. In einem System, das gemeinsam genutzte Bibliotheken auf diese Weise verwendet, können Sicherheitsprobleme auftreten, da eine App eine gemeinsam genutzte Bibliothek auf eine „neuere Version“ aktualisieren kann, die tatsächlich gehackt wurde, um Informationen preiszugeben oder die App zu steuern. Die Bibliotheken müssten als separate Pakete behandelt werden, die vom Autor signiert sind,
Izzy
Abishek V Ashok
Lüge Ryan
Dan Hulme
Lüge Ryan
Dan Hulme
Abishek V Ashok