Android Archive Library (aar) vs Standardglas

Ich habe einige Artikel über die neue Adoption von Gradle als Standard-Build-System für Android-Apps gelesen. Nun, aus der Standard-Java-Entwicklung komme ich in der Regel auf JAR- Dateien, um mein Projekt zu bauen. Allerdings scheint es, dass Android hat auch aar Pakete, die das Äquivalent zu den DLL- Dateien in einem Windows-Betriebssystem, wie hier erwähnt sind :

Zuerst müssen Sie feststellen, dass die Android-Plattform keine Anwendungsebenen-Shared-Bibliotheken zulässt. In den "traditionellen" Programmiersprachen Plattformen, C, C ++, Java, benennen Sie es, wir haben diesen Mechanismus der Freigabe von Laufzeitbibliotheken. (ZB DLL auf Windows, DSO auf Unix, Jar auf JVM, etc.). Auf Android können Sie das aber nicht tun, es sei denn, Sie sind Google oder ein Mobilteilhersteller (siehe Fußnote 1 unten). Als Anwendungsentwickler kann dies eine grundsätzliche Einschränkung sein. "Sharing" oder "Reusing" -Codes, sowohl zum Zeitpunkt der Erstellung als auch zur Laufzeit, ist ein sehr wichtiger Bestandteil der Software-Engineering-Praxis. Das ist ziemlich hart (nicht unmöglich, nur härter) auf Android wegen der oben erwähnten Einschränkung.

  • AAR in Eclipse ANT Projekt
  • Wie kann man Abhängigkeiten in die .aar-Bibliothek aufnehmen?
  • Wie veröffentlichen Sie Android .aar Quellen, um Android Studio automatisch zu finden?
  • Ausschluss von Assets für Release-Build-Typ
  • Veröffentlichen Sie die .aar-Datei mit javadocs, die auf artfactory repo angehängt sind
  • Wie kann ich Android-Support-V7-Bibliothek in SBT Android-Projekt laden?
  • Allerdings habe ich einige Zweifel an diesem Konzept. Ich meine, wann sollte ein Entwickler interessiert sein, einschließlich aar Abhängigkeiten in seiner Anwendung? Sind diese Abhängigkeiten auf eine SDK-Mindestversion verschärft?

    Zum Beispiel, in einem Projekt Ich greife auf einen COM-Port, die ich NDK vorkompiliert.so Bibliotheken für verwenden. Muss ich einen Aar erstellen, wenn ich dieses Dienstprogramm teilen möchte?

  • Android-Speicher-Typen (RAM v Interner Speicher)
  • Fehler beim Ausführen von Android Studio
  • Dynamisches Hinzufügen mehrerer Fragmente zu meinem Aktivitätslayout
  • Hinzufügen von Schaltflächenaktion in benutzerdefinierter Benachrichtigung
  • Facebook Canvas App in WebView funktioniert nicht auf Android (in native Facebook App)
  • Wo kann ich die Android SDK Dokumentation herunterladen?
  • 3 Solutions collect form web for “Android Archive Library (aar) vs Standardglas”

    AAR Dateien ähneln Jar s als zu Dll s aus folgendem Grund:

    Dll können über Anwendungen freigegeben werden, bei denen AAR s und Gläser mit Ihrer App verpackt sind.

    AAR s vs Jar s:

    Der Hauptunterschied zwischen einem Jar und einem AAR ist, dass AAR s Ressourcen wie layouts, drawables etc. enthält. Dies macht es viel einfacher, eigenständige visuelle Komponenten zu erstellen. Zum Beispiel, wenn Sie mehrere Apps, die den gleichen Login-Bildschirm verwenden, mit Jar s können Sie Klassen teilen, aber nicht das Layout, Stile, etc., mussten Sie immer noch zu duplizieren. Mit AAR s ist alles in einem ordentlichen Paket gebündelt.

    Abschließend sind AAR s ein großer Schritt in die richtige Richtung.

    Hinweis:
    Ähnliche Versuche wurden mit apk-lib aber sie sind jetzt veraltet, da AAR viel besser sind.

    Die Aussage " Der Hauptunterschied zwischen einem Jar und einem AAR ist, dass AARs Ressourcen wie Layouts, Drawables etc. enthalten " entspricht nicht der JAR-Dateispezifikation und ist daher keine Wahrheit. Nach der JAR-Datei Spezifikation :

    JAR-Datei ist ein Dateiformat, das auf dem populären ZIP-Dateiformat basiert und für die Aggregation vieler Dateien in einem verwendet wird. Eine JAR-Datei ist im Wesentlichen eine Zip-Datei, die ein optionales META-INF-Verzeichnis enthält.

    Wie Sie sehen können, gibt es keine Inhaltsbeschränkung, die auch Ressourcen wie Layouts, Drawables etc. in einer JAR-Datei verbietet. Näheres siehe Artikel 5.3 "Erstellen und Laden" der Java® Virtual Machine Spezifikation.

    Also auf die Frage Android Archive Library (aar) vs Standardglas. Die Antwort hängt davon ab, welches Build-Tool Sie verwenden.

    Wenn Sie Android Studio als Build-Tool (jeweils als Projekt-Organizer) verwenden, würden Sie definitiv besser * .aar-Dateien verwenden, um eingekapselte Ressourcen zwischen Android-Projekten zu teilen. AAR-Dateiformat ist ein Teil von Android Studio-Build und wie es in den anderen Kommentaren kommentiert wird hier seine Benutzeroberfläche unterstützt aar-Format für Android-Bibliotheken.

    Aber außer Android Studio der Rest der Welt nicht weiß, was ist das Ding aar Datei (Artefakt). Zum Beispiel, wenn Ihr Android-Build basiert auf Maven die bevorzugte Datei für Ressourcen-Sharing wird Jar, weil das ist die native Maven Java-Projekt Artefakt und es gibt keine Beschränkung, was in der Standard-JAR-Datei setzen. Darüber hinaus gibt es einen Weg zu erklären, Maven alle Dateiformate, gehören aar durch die Verwendung von Lifecycle-Erweiterung mit einer neuen Komponente. Ein einfaches Beispiel gibt es hier Wie erstelle ich eine neue Verpackungsart für Maven?

    Das Zitat in der Frage hat nichts mit der aktuellen Realität gemein. Natürlich ist es möglich, externe Bibliotheken in Android zu verwenden und es gibt viele Bibliotheken zur Verfügung. Vielleicht wollten sie sagen, dass jede Anwendung alle Bibliotheken bündeln muss, die sie braucht, aber die Wiederverwendung der Bibliothek zum Zeitpunkt der Erstellung (statische Verknüpfung) ist wirklich kein Problem.

    .aar unterscheidet sich von .jar nicht mehr als .jar unterscheidet sich von .zip . Es hat gewisse Konzepte, welche Art von Inhalt dort zu erwarten ist, aber beide .jar und .aar enthalten meistens kompilierte Klassen und Ressourcen. .aar nur an, dass die Bibliothek Android-spezifisch ist und einige erwartete Struktur, vernünftig für solche Bibliotheken (gut, .jar hat auch einige erwartete Struktur).

    Die Ansicht, dass .aar wird nur von Android Studio unterstützt wird auch veraltet. Solche Bibliotheken können zu Maven Central eingesetzt werden, und Werkzeuge wie gradle können sie mit @aar-Suffix verweisen, zum Beispiel:

     dependencies { compile ('io.github.andviane:uncover:2.0.1@aar') .. } 

    Um diesen Maven zentralen Einsatz zu verweisen.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.