Struktura projektu Android Studio (v. S. Eclipse project Structure)

Próbuję nauczyć się programowania Androida i początkowo jestem zdezorientowany różnymi strukturami projektu między Eclipse i Android Studio. Utrudnia to śledzenie samouczków zaprojektowanych dla Eclipse. Czy ktoś mógłby mi powiedzieć, dlaczego te różnice istnieją? Czy powinny istnieć?

Na przykład, gdybym miał zlokalizować R.java plik w dwóch różnych Idach, ścieżki wyglądałyby tak:

Eclipse: app\gen \ com.przykład.app\R.java

Android Studio: app \ build \ source \ r \ debug \ com.przykład.app\R.java

Dlaczego te ścieżki są inne? Dlaczego mój R.java znajduje się w folderze debugowania w Android Studio? Prowadzi to do pewnych błędów na początku i jeśli ktoś ma wgląd w te różnice, byłbym wdzięczny.

Author: Jesse, 2013-07-02

4 answers

The mystery: Android Studio ' s project Structure and Build System]}

Nie wiem, czy to z powodu Systemu Budowania Gradle (założę się, że jest), ale powiem ci, co do tej pory zrozumiałem.

Aktualizacja 4: 2014/09/11 Dodano Ściągawka Dla BuildTypes, Flavors i Variants (w końcu mam pewność, że to napiszę :D)
Aktualizacja 3: 2014/09/11 Zaktualizowano przestrzenie robocze i projekty porównawcze, aby być precyzyjnym
Aktualizacja 2: 2014/04/17 Dodano więcej szczegółów do struktury projektu AS
Aktualizacja 1: 2013/07/29 Dodano strukturę projektu IntelliJ

Struktura projektu IntelliJ (pokazana na końcu) jest dla IntelliJ z wtyczką android. Android Studio ma jednak strukturę projektu podzieloną w ten sposób: [38]}

Struktura: projekty i moduły

Moduł W Android Studio jest jak projekt w Eclipse

Projekt w Android Studio jest jak przestrzeń robocza w Eclipse (dokładnie, przestrzeń robocza z współzależnymi projektami).]} W 2008 roku firma została założona w 1998 roku przez firmę Microsoft.]}

Cokolwiek robisz w IntelliJ IDEA, robisz to w kontekście projekt. Projekt jest jednostką organizacyjną, która reprezentuje kompletne rozwiązanie programowe.

Gotowy produkt może być rozłożony na szereg dyskretne, izolowanych modułów, ale jest to definicja projektu, która przynosi im razem i łączy je w większą całość.

Dla Androida oznacza to jeden projekt na aplikację i jeden moduł na bibliotekę i na aplikację testową.

Istnieje wiele problemów, jeśli próbujesz zbudować wiele aplikacji w ramach tego samego projektu. Jest to możliwe, ale jeśli spróbujesz (tak jak ja), zobaczysz, że prawie wszystko jest zaprojektowane do pracy z jedną aplikacją na projekt.

Na przykład, istnieje opcja "przebudować projekt", co nie ma sensu w przypadku wielu aplikacji, wiele innych ustawień projektu byłoby bezużyteczne, a wbudowany system VCS nie jest świetny, gdy masz wiele repozytoriów.

Struktura: Struktura Folderów

Struktura Projektu Android Studio

Top Level Folders

1. Projekt Główny

To byłby cały kontekst projektu (Eclipse Land: jak Twój obszar roboczy, ale ograniczony do tego, co jest istotne dla Twojego projektu). Ex: HelloWorldProject Jeśli nazwa aplikacji, którą podałeś to HelloWorld

2. .idea

To miejsce, w którym metadane specyficzne dla projektu są przechowywane przez Android Studio (AS). (Eclipse Land: project.properties plik)

3. Moduł Projektu

To jest prawdziwy projekt. ex: HelloWorld Jeśli Twoja nazwa aplikacji, którą podałeś, to HelloWorld

4. gradle

To jest gdzie Gradle build system ' s jar wrapper tzn. ten jar jest jak as komunikuje się z Gradle zainstalowanym w Windows (OS w moim case).

5. Biblioteki Zewnętrzne

To nie jest katalog, ale miejsce, w którym wyświetlane są Biblioteki referencyjne ( Eclipse Land: Biblioteki referencyjne). Tutaj jest pokazana platforma docelowa itp.

[uwaga na marginesie: to gdzie wielu z Nas W Ziemi Eclipse używane do usuwania odwołanych bibliotek i naprawić właściwości projektu naprawić błędy odniesienia, pamiętasz?]

Katalog projektów w szczegółach

To jest numer # 3 w powyższym lista. Posiada następujące sub dirs

1. zbuduj

To ma wszystkie kompletne wyjście make procesu, tj. klasy.dex, skompilowane klasy i zasoby itp.

W interfejsie graficznym Android Studio pokazano tylko kilka folderów. Ważne jest to, że Twój R.java znajduje się tutaj Pod build/source/<flavor>/r/<build type(optional)>/<package>/R.java

2. libs

Jest to standardowy folder libs, który widzisz w eclipse land zbyt

3. src

Tutaj, tylko Ty zobacz folder java i res, który odpowiada folderowi src i res W Ziemi Eclipse . Jest to bardzo mile widziane uproszczenie IMHO.

Uwaga na Moduły:

Moduły są jak projekty Eclipse Land . Chodzi o to, że masz jeden projekt aplikacji (Moduł #3 na powyższej liście) i kilka projektów bibliotek (jako oddzielne moduły w folderze global project (#1 na powyższej liście)), od których zależy projekt aplikacji. Jak te projekty biblioteczne mogą być ponownie wykorzystane w innych aplikacjach, nadal nie dowiedziałem się.

[uwaga na marginesie: Cała reorganizacja ma pewne korzyści, takie jak uproszczenia w folderze src, ale tak wiele komplikacji. Komplikacje są głównie spowodowane bardzo bardzo cienką dokumentacją tego nowego układu projektu.]

Nowy System Budowania

Podręcznik Użytkownika dla nowego systemu budowania

Wyjaśnienie smaków i typów budynków itp. - Co to jest hullabaloo o?

CheatSheet dla smaków i typów budynków

BuildType: debug i releasebuildTypes dostępne domyślnie we wszystkich projektach. Służą one do budowania / kompilacji tego samego kodu w celu generowania różnych plików APK. Na przykład na apkach release chcesz uruchomić proguard( do zaciemniania), podpisać go kluczem (jak w przypadku klucza debug), uruchomić optymalizacje( może za pomocą proguard lub innych narzędzi), użyć nieco innego packageNames (używamy com.company.product dla release i com.company.product.debug dla debug), itp. Używamy również znacznika debug (BuildConfig.DEBUG), aby wyłączyć logowanie do logcat (ponieważ powoduje to spowolnienie aplikacji) na kompilacjach release. Pozwala to na szybszą kompilację debug podczas tworzenia, ale także zoptymalizowaną kompilację release do umieszczenia w Sklepie play.

Smak produktu: nie ma dostępnych domyślnych smaków (a dokładniej, domyślny smak jest pusty/bezimienny). Flavors może być wersja darmowa lub wersja płatna gdzie mają różne Kod. Mają ten sam kod Main, ale różne wersje (lub brak wersji) kilku plików kodu źródłowego lub zasobów.

BuildVariant: a {[28] } jest tym, co faktycznie odpowiada wygenerowanemu APK. Nazwane są tak (w kolejności) Product Flavor + Build Type = Build Variant.
przykład 1: jeśli masz free i {[33] } jako dwa smaki. Dostępne warianty budowy to:
Free-debug
Free-release
Paid-debug
Płatne - release
Tak więc jest to 4 możliwe konfiguracje APK. Kilka konfiguracji może nie mieć sensu w konkretnym projekcie, ale są dostępne.

Przykład 2: (dla nowych projektów/ brak smaków) masz dostępne 2 buildVariants lub Apk, ponieważ domyślny smak jest bezimienny / pusty:
debug
release

Porównaj to z struktura projektu Intellij jeśli to pomoże:

Intellij Project Structure Snapshot

The .idea (1) folder zawiera szereg podfolderów, głównie z wewnętrznymi informacjami o IntelliJ IDEA.

Folder src (2) zawiera MyActivity.java (3) kod źródłowy pliku , który implementuje funkcjonalność Twojej aplikacji. Plik należy do kom.przykładowy pakiet.

Folder res (4) zawiera różne zasoby wizualne.

Layout / main.plik xml (5) definiuje wygląd aplikacji złożonej z zasobów różnych typy.

Folder values (6) jest przeznaczony do przechowywania .pliki xml opisujące zasoby różnych typów. Obecnie folder zawiera ciąg znaków.plik xml z definicjami zasobów łańcuchowych. Jak widać z sekcji Dodawanie kolorów, folder układ może również zawierać na przykład deskryptor kolorów.

Folder drawable (7) zawiera obrazy.

Folder gen (8) zawiera R.java (9) plik, który łączy zasoby wizualne i Kod źródłowy Javy. Jak widać z poniższych sekcji, IntelliJ IDEA wspiera ścisłą integrację między statycznymi zasobami i R.java. Gdy tylko zasoby zostaną dodane lub usunięte, odpowiednie klasy i pola klas w R.java są automatycznie generowane lub usuwane odpowiednio. Na R.java plik należy również do com.przykładowy pakiet.

 200
Author: Dheeraj Bhaskar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-11 10:03:28
Android Studio: app \ build \ source \ r \ debug \ com.przykład.app\R.java

Dlaczego te ścieżki są inne? Dlaczego mój R.java znajduje się w folderze debugowania w Android Studio? Prowadzi to do pewnych błędów na początku i jeśli ktoś ma wgląd w te różnice, byłbym wdzięczny.

Mówiąc najprościej, Android Studio jest skonfigurowany do tworzenia debugowania Typ Budowy w Twoim systemie.

Eclipse / ADT jest przeznaczony do obsługi pojedynczej kompilacji w czasie (z tego co wiem). Jednym z głównych celów nowego systemu budowania (z podręcznika użytkownika):

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

Więc gdzie jako Eclipse/ADT może wygenerować jeden plik R.java, Android Studio obsługuje wiele. Wygenerowany R.java znajduje się w folderze debug, ponieważ domyślnie nowy system budowania obsługuje typy debug i release off the bat. Jeśli zmieniłeś wariant budowania (przycisk, lewy dolny róg AS) na release AS wygeneruje R.java w release katalog.

Może to nie znaczy nic dla prostych projektów, ale wsparcie warianty budowy oznacza drastyczne uproszczenie procesu budowania dla wielu deweloperów, w tym projektu, nad którym pracuję.

Nasz projekt obsługuje 4 smaki z 2 typami kompilacji( debugowanie i wydanie), aby obsługiwać łącznie 8 różnych kombinacji APK. I każda z tych kombinacji ma nieco inne konfiguracje, więc ten system budowania naprawdę nam się sprawdził. Moje android studio jest zainstalowane na innym komputerze, ale jeśli pamięć dobrze mi służy, plik R.java istnieje w build/source/<flavor>/r/<build type>/package/R.java. Gdy nasz serwer CI buduje pliki APK, używa każdego z tych plików R.java do generowania oddzielnych pakietów.

 31
Author: Joe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-17 19:43:51

Google zaprzestanie wsparcia dla narzędzi programistycznych dla Androida (ADT) in Eclipse is ending, per our announcement. Powinieneś migrować Twoje projekty rozwoju aplikacji do Android Studio tak szybko, jak to możliwe. Aby uzyskać więcej informacji na temat przejścia do Android Studio, zobacz migracja do Android Studio.

Więc najlepsze dla Android development tool dla Android Studio tylko dla wszystkich przyszłych wsparcie Android M ---

 0
Author: OpenWebWar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-10 14:48:40

Dla android Studio 3.0.1 i wybrane wszystkie funkcje:

  • Android o najnowszy
  • Android Auto
  • Android things
  • Android wear
  • Android TV
  • obsługa C++
  • wsparcie Kotlina

Struktura w wersji 3.0.1 nie wygląda tak jak wszystkie inne odpowiedzi.

Ostatnia struktura jest wyświetlana w 2018 roku, Android Studio 3.0.1 01/2018.

Newbie znalazł coś przypominającego użyteczność w funkcji podkatalog:

Zaktualizuj swoje Android Studio 3.0.1 01_2018:

ToolTip:

 -2
Author: Gear,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-16 06:33:43