HasCode / ExtractNativeLibs?

1 Antwort

https://developer.android.com/guide/topics/manifest/application-element

Zu hasCode steht dort, dass es sich dabei um einen Indikator handelt, ob die Applikation Java / Kotlin (Byte-)Code hat und somit in der Java Runtime gestartet werden muss, oder ausschließlich natives Maschinencode für die Architektur (c/c++) hat. Laut Dokumentation müssen dabei auch die angewandten Bibliotheken berücksichtigt werden.

extractNativeLibs (oder seit AGP 4.2.0 "useLegacyPackaging") gibt an, ob native Bibliotheken in der APK im Original oder verkleinert gespeichert sind. Laut der Dokumentation war der Hintergrund dafür, dass Bibliotheken, welche verkleinert sind, zunächst kleiner im Download sind, danach aber dekomprimiert und auf das Dateisystem geschrieben werden müssen, um dann von dort aus geladen zu werden, was zu größeren Installationen und längeren Ladezeiten führen kann. Das hat sich aber relativiert, da heute Distributionszentren wie der Play-Store auch Kompression anwenden, welche sogar teils besser sind. Somit hat diese Funktion keine Vorteile mehr, wenn du die APK nicht anderweitig vertreibst, und dir die Downloadgröße wichtig ist.