Wie können wir eine einzelne Bibliothek erstellen, indem wir verschiedene Module kombinieren?

Ich möchte eine einzige Bibliothek aus meinem Projekt erstellen, das Projekt nutzt viele Abhängigkeiten und Ressourcen. Wenn cardview als ein Glas importiert wird, wird es nicht die Ressourcen damit haben, aber wenn es als aar hinzugefügt wird, wird es dann als weiteres Modul hinzugefügt. So kann ich es nicht zu einer einzigen aar Bibliothek kombinieren. Ich möchte mein Projekt nicht in das Repository einreichen. Wie kann ich die Bibliothek bauen, danke im Voraus!

  • In Unity Android App, wie man Inhalte von einem Service einer referenzierten Android-Bibliothek zu erhalten
  • Android AAR Paket für native Bibliothek
  • Wie versende ich eine Android Library (aar) mit entfernten Abhängigkeiten (gradle)?
  • Unity3D und AAR
  • Ausschluss von Assets für Release-Build-Typ
  • Wie man eine Jar-Datei aus Android-Studio zu erstellen
  • Wie man eine Aar-Datei in Apache Archiva mit Gradle veröffentlicht
  • Android externer Service aus einer Bibliothek (AAR, nicht Shared Service)
  • Android AAR Paket für native Bibliothek
  • Android Studio 2.2 Vorschau werfen Fehler beim Implementieren von Datenbindungen
  • Wie integriere ich ZXing Library zu Android Studio für Barcode Scannen?
  • Fehler: Fehler beim Auflösen: com.twitter.sdk.android:twitter:2.3.0 - Android Studio
  • 3 Solutions collect form web for “Wie können wir eine einzelne Bibliothek erstellen, indem wir verschiedene Module kombinieren?”

    Android-fat-aar sollte dieses Problem für Sie behandeln.

    Sie müssen

     apply from: 'fat-aar.gradle' 

    Aus dem GitHub-Repository und ersetzen dann Ihre Kompilierabhängigkeiten durch eine eingebettete Abhängigkeit. Also anstatt ein Modul zu definieren otherModule als

     dependencies { compile project(':otherModule') } 

    Du musst es nur definieren

     dependencies { embedded project(':otherModule') } 

    Die Kompilierungskonfiguration hängt von der eingebetteten Konfiguration ab, also hättest du das gleiche Verhalten lokal wie vorher.

    Aber am Ende ist dies eine problematische Konfiguration, vor allem, wenn Sie einige der Android Support-Bibliotheken verwenden möchten. Sie würden höchstwahrscheinlich in Duplikationsprobleme laufen.

    Wenn Sie dieses Setup für die Offline-Arbeit erstellen, sollten Sie ein lokales Maven-Repository verwenden

     repositories { mavenLocal() } 

    Mit einer Kopie der Bibliotheksartefakte, die du benutzen musst. Oder vielleicht sogar ein persönlich verwaltetes Repository für dich und jeden anderen, der es braucht.

    Sind Sie sich bewusst, dass Sie ein Modul als Bibliothek verwenden können (Quellen, keine Kompilierung eines AAR)? Das bedeutet, dass Ihr Bibliotheksprojekt alle Gradle-Abhängigkeiten nutzen kann. Hier ist ein Beispiel mit einem Bibliotheksprojekt namens 'MyApiLibrary', das ein eigenständiges Modul namens 'api'

    Zuerst erstellen Sie Ihre Bibliothek als neues Projekt (mit dem Modulnamen 'api' für dieses Beispiel, aber der Name kann beliebig sein). In der Gradle-Datei für dieses Bibliotheksmodul verwenden Sie das Bibliotheks-Plugin, in dem Sie normalerweise das Anwendungs-Plugin verwenden würden

     apply plugin: 'com.android.library' //not apply plugin: 'com.android.application' 

    defaultConfig außerdem sicher, dass das Bibliotheksmodul keine applicationId in der defaultConfig seiner Gradle-Datei deklariert. Dann deklariere alle Bibliotheksabhängigkeiten wie gewohnt.

    Dann in Ihrem verbrauchenden Projekt importieren Sie die Bibliothek, indem Sie die folgenden in settings.gradle :

     //this first line declares a pseudonym to refer to the library module include ':api' //this second line explains where the pseudonym links to //(the path to the module directory of the library project, relative to the root dir of the current project) project(':api').projectDir = new File('../MyApiLibrary/api/') 

    In der Gradle-Datei deines Verbrauchsmoduls verweise das Projekt als Abhängigkeit:

     dependencies { ... compile project(':api') } 

    Jetzt kann alles in deinem Hauptprojekt auf alle Klassen und importierten Abhängigkeiten des Bibliotheksprojekts zugreifen

    Wenn ich es richtig finde, hast du ein Multimodul-Projekt, das mehrere Bibliotheksprojekte hat und du willst ein einziges Aar kompilieren, das deine Module und deren Abhängigkeiten umfasst. Wenn ja:

    -Install maven. -Apply das gradle maven plugin ( https://github.com/dcendents/android-maven-gradle-plugin ) zu deinen Modulen. Verwenden Sie die Installationsaufgabe, um die Module als einzelne Bibliotheken zu installieren.

    – Erstellen Sie ein neues Modul, das alle installierten Versionen Ihrer einzelnen Bibliotheken und deren Abhängigkeiten importiert. Wenden Sie das Android-Shade-Plugin ( https://github.com/zawn/android-shade-plugin , Dokumentation hier: http://imperceptiblethoughts.com/shadow/ ) an dieses Modul an. Die Ausgabe davon ist ein uber-aar, und aar mit Ihren Bibliotheksmodulen und deren Abhängigkeiten. Sie können diese in Ihre lokale Maven-Instanz installieren, oder legen Sie die aar in das libs-Verzeichnis in Ihren Apps.

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