it-swarm.com.de

Android Studio-Projektstruktur (vs. Eclipse-Projektstruktur)

Ich versuche, Android Entwicklung zu erlernen, und bin anfangs durch die unterschiedlichen Projektstrukturen zwischen Eclipse und Android Studio verwirrt. Dies macht es schwierig, den erstellten Tutorials zu folgen Kann mir jemand mitteilen, warum diese Unterschiede bestehen?

Wenn ich zum Beispiel die R.Java-Datei in den beiden verschiedenen IDEs finden würde, würden die Pfade so aussehen:

Eclipse: app\gen\com.example.app\R.Java

Android Studio: app\build\source\r\debug\com.example.app\R.Java

Warum unterscheiden sich diese Pfade? Warum befindet sich mein R.Java in einem Debug-Ordner in Android Studio? Dies hat zu frühen Fehlern geführt, und wenn jemand einen Einblick in diese Unterschiede hat, würde ich mich über sie freuen.

108
Jesse

Das Geheimnis: Android Studios Projektstruktur und Build-System

Ich weiß nicht, ob das am Gradle Build System liegt (ich wette es), aber ich werde Ihnen sagen, was ich bisher verstanden habe.

pdate 4: 11.09.2014 Hinzugefügt Spickzettel für BuildTypes, Flavors und Variants (Ich bin endlich zuversichtlich, dies zu schreiben: D)
pdate 3: 11.09.2014 Die Vergleichsarbeitsbereiche und -projekte wurden aktualisiert, um genau zu sein
pdate 2: 17.04.2014 AS-Projektstruktur erweitert
pdate 1: 29.07.2013 IntelliJ-Projektstruktur hinzugefügt

Die Projektstruktur von IntelliJ (am Ende gezeigt) ist für IntelliJ mit dem Android Plugin. Das Android Studio hat jedoch eine Projektstruktur, die folgendermaßen unterteilt ist:

Struktur: Projekte und Module

Modul in Android Studio ist wie ein Projekt ​​in Eclipse

Projekt ​​in Android Studio ist wie ein Arbeitsbereich in Eclipse (um genau zu sein, ein Arbeitsbereich mit voneinander abhängige Projekte)

Von die Dokumentation (Android Studio basiert auf Intellij IDEA):

Was auch immer Sie in IntelliJ IDEA tun, tun Sie dies im Kontext eines Projekts. Ein Projekt ist eine Organisationseinheit, die eine vollständige Softwarelösung darstellt.

Ihr fertiges Produkt kann in eine Reihe von diskreten, isolierten Modulen zerlegt werden, aber es ist eine Projektdefinition, die sie zusammenführt und zu einem größeren Ganzen zusammenfügt.

Für Android bedeutet dies ein Projekt pro App und ein Modul pro Bibliothek und pro Test-App.

Es gibt mehrere Probleme, wenn Sie versuchen, mehrere Apps innerhalb desselben Projekts zu erstellen. Es ist möglich, aber wenn Sie es versuchen (wie ich), werden Sie feststellen, dass fast alles für die Verwendung einer einzigen App pro Projekt ausgelegt ist.

Zum Beispiel gibt es eine Option zum "Neuerstellen des Projekts", die bei mehreren Apps keinen Sinn ergibt, viele andere Projekteinstellungen wären nutzlos und das integrierte VCS-System ist nicht besonders gut, wenn Sie mehrere Repositorys haben.

Struktur: Ordnerstruktur

Android Studio Project Structure

Ordner der obersten Ebene

1. Hauptprojekt

Dies wäre vollständig Projektkontext ​​(Eclipse Land: Wie Ihr Arbeitsbereich, jedoch auf das für Ihr Projekt Relevante beschränkt). Beispiel: HelloWorldProject wenn der Name der von Ihnen angegebenen Anwendung HelloWorld war

2. .idea

Hier werden projektspezifische Metadaten von Android Studio (AS) gespeichert. (Eclipse Land:project.properties file)

3. Projektmodul

Dies ist das eigentliche Projekt. Beispiel: HelloWorld Wenn Ihr Anwendungsname HelloWorld war

4. Gradle

Hier befindet sich der JAR-Wrapper des Gradle Build-Systems, d. H. In diesem JAR kommuniziert AS mit Gradle, das unter Windows installiert ist (in meinem Fall das Betriebssystem).

5. Externe Bibliotheken

Dies ist eigentlich kein Ordner, sondern ein Ort, an dem Referenzierte Bibliotheken (Eclipse Land: Referenzierte Bibliotheken) angezeigt werden. Hier wird die Zielplattform usw. angezeigt.

[Randnotiz: Hier haben viele von uns in Eclipse Land die referenzierten Bibliotheken gelöscht und Projekteigenschaften repariert, um Referenzfehler zu beheben. Erinnerst du dich?]

Projektordner im Detail

Dies ist die Nummer 3 in der obigen Liste. Hat die folgenden Unterverzeichnisse

1. bauen

Dies hat die gesamte Ausgabe des make-Prozesses, d. H. Classes.dex, kompilierte Klassen und Ressourcen usw.

In der Android Studio-GUI werden nur einige Ordner angezeigt. Der wichtige Teil ist, dass dein R.Java ist hier zu finden unter build/source/<flavor>/r/<build type(optional)>/<package>/R.Java

2. libs

Dies ist der Standard-Bibliotheksordner, den Sie auch in Eclipse land sehen

3. src

Hier sehen Sie nur die Ordner Java und res, die dem Ordner src und dem Ordner res in Eclipse Land entsprechen. Dies ist eine sehr begrüßenswerte Vereinfachung meiner Meinung nach.

Anmerkung zu den Modulen:

Module sind wie Eclipse Land Projekte. Hier besteht die Idee, dass Sie ein Anwendungsprojekt (Modul 3 in der obigen Liste) und mehrere Bibliotheksprojekte (als separate Module im globalen Projektordner (# 1 in der obigen Liste)) haben, von denen das Anwendungsprojekt abhängt. Wie diese Bibliotheksprojekte in anderen Anwendungen wiederverwendet werden können, habe ich noch nicht herausgefunden.

[Randnotiz: Die gesamte Reorganisation hat einige Vorteile wie Vereinfachungen im src-Ordner, aber so viele Komplikationen. Die Komplikationen sind hauptsächlich auf SEHR SEHR dünne Dokumentation zu diesem neuen Projektlayout zurückzuführen.]

Das neue Build-System

Benutzerhandbuch für das neue Build-System

Erklärung von Aromen und BuildTypes, etc. - Worum geht es in dem Hullabaloo?

CheatSheet für Aromen und BuildTypes

BuildType:debug und release sind in allen Projekten standardmäßig buildTypes verfügbar. Sie dienen zum Erstellen/Kompilieren des GLEICHEN CODE, um verschiedene APKs zu generieren. Bei release-APKs möchten Sie beispielsweise proguard ausführen (zur Verschleierung), es mit Ihrem Schlüssel signieren (gegen den Debug-Schlüssel), Optimierungen ausführen (möglicherweise über proguard oder andere Tools), etwas anderen packageNames verwenden (wir verwenden com.company.product für release). und com.company.product.debug für debug) usw. Wir verwenden auch ein Debug-Flag (BuildConfig.DEBUG), um die Protokollierung in logcat zu deaktivieren (da die App dadurch langsamer wird), wenn release erstellt wird. Dies führt zu einer schnelleren debug-Erstellung während der Entwicklung, aber auch zu einer optimierten release-Erstellung für den Play Store.

Produktgeschmack: Es sind keine Standardgeschmacksrichtungen verfügbar (genauer gesagt, die Standardgeschmacksrichtung ist leer/namenlos). Flavors kann kostenlose Version oder kostenpflichtige Version sein, wenn sie VERSCHIEDENER CODE haben. Sie haben denselben Main-Code, aber unterschiedliche Versionen (oder keine Versionen) einiger Quellcodedateien oder -ressourcen.

BuildVariant: A buildVariant entspricht eigentlich einer generierten APK. Sie werden wie folgt benannt (in der Reihenfolge) Product Flavor + Build Type = Build Variant.
Beispiel 1: wenn Sie free und paid als zwei Geschmacksrichtungen haben. Die Build-Varianten, die Sie erhalten würden, sind:
Free - Debug
Free - Release
Bezahlt - Debuggen
Bezahlte Freilassung
Das sind also 4 mögliche APK-Konfigurationen. Einige Konfigurationen sind in einem bestimmten Projekt möglicherweise nicht sinnvoll, aber sind verfügbar.

Beispiel 2: (für neue Projekte/keine Versionen) Sie haben 2 buildVariants oder APKs zur Verfügung, da die Standardversion namenlos/leer ist:
debuggen
Veröffentlichung

Vergleichen Sie dies mit Intellijs Projektstruktur wenn das hilft:

Intellij Project Structure Snapshot

Der Ordner .idea (1) enthält eine Reihe von Unterordnern, hauptsächlich mit internen Informationen zu IntelliJ IDEA.

Der Ordner src (2) enthält den Quellcode der Datei MyActivity.Java (3), der die Funktionalität Ihrer Anwendung implementiert. Die Datei gehört zum Paket com.example.

Der Ordner res (4) enthält verschiedene visuelle Ressourcen.

Die Datei layout/main.xml (5) definiert das Erscheinungsbild der Anwendung, die aus Ressourcen verschiedener Typen besteht.

Der Ordner values ​​(6) dient zum Speichern von XML-Dateien, die Ressourcen verschiedener Typen beschreiben. Derzeit enthält der Ordner eine Datei "strings.xml" mit Definitionen der String-Ressourcen. Wie Sie im Abschnitt Hinzufügen einer Farbe sehen werden, kann der Layoutordner beispielsweise auch einen Farbdeskriptor enthalten.

Der Zeichenordner (7) enthält Bilder.

Der Ordner gen (8) enthält die Datei R.Java (9), die die visuellen Ressourcen und den Quellcode Java verknüpft. Wie Sie in den folgenden Abschnitten sehen werden, unterstützt IntelliJ IDEA eine enge Integration zwischen statischen Ressourcen und R.Java. Sobald Ressourcen hinzugefügt oder entfernt werden, werden die entsprechenden Klassen und Klassenfelder in R.Java automatisch generiert oder entfernt. Die R.Java-Datei gehört ebenfalls zum Paket com.example.

203
Dheeraj Bhaskar

Android Studio: app\build\source\r\debug\com.example.app\R.Java

Warum unterscheiden sich diese Pfade? Warum befindet sich mein R.Java in einem Debug-Ordner in Android Studio? Dies hat zu frühen Fehlern geführt, und wenn jemand einen Einblick in diese Unterschiede hat, würde ich mich über sie freuen.

Einfach ausgedrückt, Android Studio ist konfiguriert, um ein Debug zu erstellen Build Type on dein System.

Eclipse/ADT unterstützt jeweils einen Build (soweit ich das beurteilen kann). Eines der Hauptziele des neuen Build-Systems ( aus der Bedienungsanleitung ):

Make it easy to create several variants of an application, 
either for multi-apk distribution or for different flavors of an application

Also, wo als Eclipse/ADT könnte ein R.Java Datei, Android Studio unterstützt mehrere. Die generierte R.Java befindet sich im Ordner debug, da das neue Build-System standardmäßig die Build-Typen debug und release von Anfang an unterstützt. Wenn Sie Ihre Build-Variante (Schaltfläche, linke untere Ecke von AS) geändert haben, um AS freizugeben, wird R.Java im Verzeichnis release.

Für einfache Projekte mag dies nichts bedeuten, aber die Unterstützung von Build-Varianten bedeutet eine drastische Vereinfachung des Build-Prozesses Für viele Entwickler, einschließlich des Projekts, an dem ich arbeite.

Unser Projekt unterstützt 4 Varianten mit 2 Build-Typen (Debug und Release), um insgesamt 8 verschiedene APK-Kombinationen zu unterstützen. Und jede dieser Kombinationen weist leicht unterschiedliche Konfigurationen auf, sodass dieses Build-System für uns wirklich gut funktioniert hat. Mein Android Studio ist auf einem anderen Computer installiert, aber wenn der Arbeitsspeicher ordnungsgemäß funktioniert, wird das R.Java Datei existiert in build/source/<flavor>/r/<build type>/package/R.Java. Wenn unser CI-Server die APK-Dateien erstellt, verwendet er diese R.Java Dateien, um separate Pakete zu generieren.

31
Joe

Google Support einstellen für die Android Developer Tools (ADT) in Eclipse endet laut unserer Ankündigung. Sie sollten Ihre App-Entwicklungsprojekte auf Android Studio so bald wie möglich. Weitere Informationen zum Übergang zu Android Studio finden Sie unter Migration zu Android Studio.

Also am besten für Android Entwicklungstool für Android Studio nur für die zukünftige Unterstützung von Android M - -

0
OpenWebWar