2016-04-14 4 views
1

Ist es möglich, eine ganze Android-App ein Paket zu machen, um in eine andere Android-App aufgenommen zu werden?Kann ich eine ganze Android App in eine Bibliothek packen?

Ich spreche nicht nur über Java-Code, der in eine .jar-Datei kompiliert wurde. Ich beziehe mich darauf, alles einzubeziehen: Java-Code, Layouts usw. Dann verwenden Sie Intents, um mit dieser "Bibliothek" zu kommunizieren. Ich möchte keine separate apk oder separate App installiert haben. Es ist wie eine ganze apk, die eine andere beinhaltet und die ganze Sache zu einer neuen App macht. Wahrscheinlich muss das Manifest anders gehandhabt werden.

Ich schaute auf diese Tutorials, aber ist nur eine regelmäßige .jar mit Plain-Java-Code.

http://www.vogella.com/tutorials/AndroidLibraryProjects/article.html

alle Hinweise sehr dankbar. Danke!

+1

Sie können natürlich gerne [Bibliotheksmodule] (http://developer.android.com/tools/projects/index.html#LibraryModules) erstellen. Dies wird in dem Tutorial behandelt, das Sie verlinkt haben und das mit etwas älterem Material, das sich auf JARs konzentriert, durchsetzt ist. Ob Sie "beabsichtigen, zu kommunizieren", liegt ganz bei Ihnen, da Sie sowohl die Bibliothek als auch die Anwendung schreiben werden. – CommonsWare

+0

sieht aus wie ich kann. Die AAR-Dateien. http://tools.android.com/tech-docs/new-build-system/aar-format https://androidbycode.wordpress.com/2015/02/23/building-an-aar-library -in-android-studio / – gmmo

Antwort

0

Sie können ein .aar-Archiv erstellen, ja. Ein paar Dinge wissen über diese:

  • AAR als Bibliotheksprojekt gebaut wird, mit gradle Plugin ‚com.android.library‘
  • Sie noch ein Shell-Anwendungsprojekt benötigt haben, die eine Abhängigkeit erklärt auf dem aar aus der Bibliothek gebaut.
  • Das aar wird sein eigenes Manifest und Ressourcen haben. Das Manifest und die Ressourcen erhalten fusioniert in das Manifest der Shell-Anwendung. Ist es am besten, den Prozess der manifesten Fusion zu verstehen?
  • Die aar wird natürlich einen eigenen Code haben, und die Shell-App kann keine Klassen im aar duplizieren.
  • Die Shell-Anwendung muss ihre eigene Anwendungs-ID in ihrer eigenen build.gradle deklarieren sowie andere erforderliche Eigenschaften, die von Anwendungen erwartet werden, die mit dem Plugin "com.android.application" erstellt wurden.
  • Keine der Anwendungseinstellungen kann in Konflikt mit den Einstellungen von der AAR stehen. Beispielsweise können Sie nicht auf eine niedrigere API-Ebene als das Minimum in der aar-Ebene ausrichten.
  • Die Anwendung kann keine der im aar definierten Ressourcen überschreiben. Es ist umgekehrt - Bibliotheken überschreiben Ressourcen, die in der App definiert sind.

Wenn Sie die aar direkt in die Dateistruktur des App sind einschließlich, müssen Sie eine Abhängigkeit von ihm wie folgt (oder ähnlich) erklären:

repositories { 
    flatDir { 
     dirs 'libs' // place the aar in here 
    } 
} 
dependencies { 
    compile(name:'fileNameOfAarWithoutExtension', ext:'aar') 
} 

Aber wenn man der Verteilung Als Maven-Abhängigkeit können Sie einfach die Maven-Koordinaten verwenden.

Es könnte andere Dinge zu wissen geben, aber das ist, was ich aus der Spitze meines Kopfes denken kann.