Android Studio: nowy projekt vs nowy moduł


141

Android Studio używa koncepcji modules, podczas gdy inne IDE, takie jak Eclipse, używają projects. Jednak Filemenu AS ma opcję tworzenia, a New Moduletakże new Project.

Jakie są różnice między tymi dwoma, jeśli w ogóle?

Który z nich jest zalecany?

Odpowiedzi:


102

Z dokumentacji (Android Studio bazuje na Intellij IDEA):

Cokolwiek robisz w IntelliJ IDEA, robisz to w kontekście projektu. Projekt to jednostka organizacyjna reprezentująca kompletne rozwiązanie programowe.

Twój gotowy produkt może zostać rozłożony na szereg odrębnych, odizolowanych modułów, ale jest to definicja projektu, która łączy je razem i łączy w większą całość.

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

W przypadku próby utworzenia wielu aplikacji w ramach tego samego projektu występuje wiele problemów. 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 „przebudowy projektu”, która nie ma sensu w przypadku wielu aplikacji, wiele innych ustawień projektu byłoby bezużytecznych, a wbudowany system VCS nie jest świetny, gdy masz wiele repozytoriów.


1
„Oznacza to jeden projekt na aplikację i jeden moduł na bibliotekę i aplikację testową”… Co to oznacza? Jeśli „aplikacja testowa” jest aplikacją, w projekcie mogą znajdować się tylko dwa moduły, jeden dla aplikacji (zwykłej lub testowej) i jeden dla biblioteki.
LarsH

2
@LarsH, określiłbym to jako: „projekt na główną aplikację”
Nico

4
to nie jest odpowiedź. zła odpowiedź
metis

169

Odpowiedź KISS:

moduł w Android Studio jest jak projekt w Eclipse

projekt w Android Studio jest jak obszar roboczy w Eclipse


8
Sam zmagałem się z tym problemem i chociaż wydaje mi się, że jest to przypadek koncepcyjny, jestem zdezorientowany. Kiedy tworzę nowy „Projekt” w Android Studio, pojawia się kreator, który pyta mnie o takie rzeczy jak Motyw, użycie ActionBar, Układ siatki i tym podobne. Myślałem, że te rzeczy pozostaną modułowi. Jeśli te pytania są tylko w ten sposób, że odpowiednie biblioteki obsługi są dodane do „Projektu”, to rozumiem, ale widzę te same rzeczy podczas tworzenia nowego modułu. Dość zagmatwane.
Scott Naef

2
Masz rację, ale zaakceptowana odpowiedź wskazuje tylko na problemy z próbą pracy ze studiem Android tak, jakby było zaćmieniem. Większość ludzi szukających tego pytania musi tylko wiedzieć, jaka jest analogia.
Oded Breiner

Tworzenie nowego projektu w Androidzie nie wygląda bardziej jak aplikacja z manifestem / res / i src - jako dołączona do „obszaru roboczego”. Podczas tworzenia modułu dostępne są dwa typy: 1) moduł aplikacji i 2) moduł biblioteki Android. # 1 wydaje się zbędny dla „nowego projektu”, a # 1 i # 2 wydają się takie same.
user1679130

oO to naprawdę taki moduł ?!
Martin Pfeffer

1
@MartinPfeffer - nie, ale to najbliższa analogia, przeczytaj więcej tutaj: jetbrains.org/intellij/sdk/docs/basics/project_structure.html
Oded Breiner

35

Projekt w Android Studio stanowi kompletną aplikację na Androida. Projekty Android Studio składają się z co najmniej jednego modułu .

Moduł jest składnikiem aplikacji, które można budować, test lub debug niezależnie.

Moduły zawierają kod źródłowy i zasoby Twojej aplikacji.


10

Ze zaktualizowanych dokumentów [2019]:

Moduły zapewniają kontener dla kodu źródłowego aplikacji, plików zasobów i ustawień na poziomie aplikacji, takich jak plik kompilacji na poziomie modułu i plik manifestu systemu Android. Każdy moduł można niezależnie zbudować, przetestować i debugować.

Android Studio wykorzystuje moduły, aby ułatwić dodawanie nowych urządzeń do projektu. Wykonując kilka prostych kroków w Android Studio, możesz utworzyć moduł zawierający kod właściwy dla typu urządzenia, takiego jak Wear OS lub Android TV. Android Studio automatycznie tworzy katalogi modułów, takie jak katalogi źródłowe i zasobów oraz domyślny plik build.gradle odpowiedni dla typu urządzenia. Ponadto Android Studio tworzy moduły urządzeń z zalecanymi konfiguracjami kompilacji, takimi jak korzystanie z biblioteki Leanback dla modułów Android TV.

Dawny:

  • Moduł telefonu i tabletu
  • Moduł Android Wear
  • Moduł Android TV
  • Moduł szklany

Oprócz tego możesz mieć także „moduł lokalnej biblioteki”. Powiedzmy, że tworzysz platformę zarządzania kontami jako moduł biblioteki, który ma być ostatecznie używany w aplikacji, możesz to zrobić jako oddzielny moduł w tym samym projekcie. Aby uwzględnić to w swojej aplikacji, musisz napisać coś takiego,

compile project(':mylibrary')

Dokumenty mówią:

To deklaruje zależność od modułu biblioteki systemu Android o nazwie „mylibrary” (ta nazwa musi być zgodna z nazwą biblioteki zdefiniowaną jako dołączenie w pliku settings.gradle). Wymaga systemu kompilacji, aby skompilować moduł biblioteki z modułem aplikacji i uwzględnić wynikowy plik AAR w pliku APK.

Na koniec Intellij wspomina o kilku szczegółach dotyczących plików konfiguracyjnych modułu:

Informacje o konfiguracji modułu są przechowywane w pliku modułu .iml . Domyślnie taki plik znajduje się w folderze głównym zawartości modułu.

Zespoły programistyczne zwykle udostępniają .imlpliki modułów poprzez kontrolę wersji.

Ten .imlplik jest trochę przerażający . Oto przykład z mojego projektu:

<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="LearnCity" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="android-gradle" name="Android-Gradle">
      <configuration>
        <option name="GRADLE_PROJECT_PATH" value=":app" />
      </configuration>
    </facet>
    <facet type="android" name="Android">
      <configuration>
        <option name="SELECTED_BUILD_VARIANT" value="debug" />
        <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
        <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
        <afterSyncTasks>
          <task>generateDebugSources</task>
        </afterSyncTasks>
        <option name="ALLOW_USER_CONFIGURATION" value="false" />
        <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
        <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res/layouts/common/layout/ver3/layout" />
        <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver3/layout;file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver3;file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver2/layout;file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver2;file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver1/layout;file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver1;file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver0/layout;file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver0;file://$MODULE_DIR$/src/main/res/layouts/common/layout;file://$MODULE_DIR$/src/main/res/layouts/learner/layout;file://$MODULE_DIR$/src/main/res/layouts/tutor/layout;file://$MODULE_DIR$/src/main/res/layouts/obsolete/layout;file://$MODULE_DIR$/src/main/res/layouts/common;file://$MODULE_DIR$/src/main/res/layouts/learner;file://$MODULE_DIR$/src/main/res/layouts/tutor;file://$MODULE_DIR$/src/main/res/layouts/obsolete;file://$MODULE_DIR$/src/main/res/layouts;file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/src/debug/res" />
        <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
      </configuration>
    </facet>
  </component>
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
    <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
    <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" />
    <exclude-output />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/google-services/debug" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
      <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver3/layout" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver3" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver2/layout" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver2" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver1/layout" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver1" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver0/layout" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout/ver0" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common/layout" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/learner/layout" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/tutor/layout" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/obsolete/layout" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/common" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/learner" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/tutor" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts/obsolete" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res/layouts" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
      <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/multi-dex" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/restart-dex" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
      <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
      <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
    </content>
    <orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" exported="" name="google-http-client-android-1.22.0" level="project" />
    <orderEntry type="library" exported="" name="firebase-analytics-10.2.0" level="project" />
    <orderEntry type="library" exported="" name="firebase-core-10.2.0" level="project" />
    <orderEntry type="library" exported="" name="play-services-auth-base-10.2.0" level="project" />
    <orderEntry type="library" exported="" name="gson-2.8.0" level="project" />
    <orderEntry type="library" exported="" name="play-services-tasks-10.2.0" level="project" />
    <orderEntry type="library" exported="" name="constraint-layout-1.0.2" level="project" />
    <orderEntry type="library" exported="" name="appengine-api-1.0-sdk-1.9.50" level="project" />
    <orderEntry type="library" exported="" name="design-25.3.0" level="project" />
    <orderEntry type="library" exported="" name="android-job-1.1.8" level="project" />
    <orderEntry type="library" exported="" name="transition-25.3.0" level="project" />
    <orderEntry type="library" exported="" name="play-services-base-10.2.0" level="project" />
    <orderEntry type="library" exported="" name="multispinner-0.1.1" level="project" />
    <orderEntry type="library" exported="" name="play-services-auth-10.2.0" level="project" />
    <orderEntry type="library" exported="" name="support-core-ui-25.3.0" level="project" />
    <orderEntry type="library" exported="" name="simpleratingbar-0.1.5" level="project" />
    <orderEntry type="library" exported="" name="play-services-maps-10.2.0" level="project" />
    <orderEntry type="library" exported="" name="play-services-location-10.2.0" level="project" />
    <orderEntry type="library" exported="" name="firebase-iid-10.2.0" level="project" />
    <orderEntry type="library" exported="" name="support-core-utils-25.3.0" level="project" />
    <orderEntry type="library" exported="" name="jsr305-2.0.1" level="project" />
    <orderEntry type="library" exported="" name="support-fragment-25.3.0" level="project" />
    <orderEntry type="library" exported="" scope="TEST" name="multidex-instrumentation-1.0.1" level="project" />
    <orderEntry type="library" exported="" name="constraint-layout-solver-1.0.2" level="project" />
    <orderEntry type="library" exported="" name="androidannotations-api-3.2" level="project" />
    <orderEntry type="library" exported="" name="java-uuid-generator-3.1.4" level="project" />
    <orderEntry type="library" exported="" name="google-http-client-1.22.0" level="project" />
    <orderEntry type="library" exported="" name="firebase-messaging-10.2.0" level="project" />
    <orderEntry type="library" exported="" name="firebase-analytics-impl-10.2.0" level="project" />
    <orderEntry type="library" exported="" name="firebase-common-10.2.0" level="project" />
    <orderEntry type="library" exported="" name="eventbus-3.0.0" level="project" />
    <orderEntry type="library" exported="" name="cat-1.0.5" level="project" />
    <orderEntry type="library" exported="" name="play-services-basement-10.2.0" level="project" />
    <orderEntry type="library" exported="" name="support-compat-25.3.0" level="project" />
    <orderEntry type="library" exported="" name="support-v4-25.3.0" level="project" />
    <orderEntry type="library" exported="" name="multidex-1.0.1" level="project" />
    <orderEntry type="library" exported="" scope="TEST" name="hamcrest-core-1.3" level="project" />
    <orderEntry type="library" exported="" name="support-media-compat-25.3.0" level="project" />
    <orderEntry type="library" exported="" scope="TEST" name="junit-4.12" level="project" />
    <orderEntry type="library" exported="" name="recyclerview-v7-25.3.0" level="project" />
    <orderEntry type="library" exported="" name="appcompat-v7-25.3.0" level="project" />
    <orderEntry type="library" exported="" name="animated-vector-drawable-25.3.0" level="project" />
    <orderEntry type="library" exported="" name="support-annotations-25.3.0" level="project" />
    <orderEntry type="library" exported="" name="support-vector-drawable-25.3.0" level="project" />
    <orderEntry type="module" module-name="backend" exported="" />
    <orderEntry type="library" exported="" name="android-android-25" level="project" />
  </component>
</module>

Chociaż przyjęta odpowiedź była martwa, czas i tendencja Google do zmian, jak wiatr, sprawiły, że stała się przestarzała (czy ośmielę się powiedzieć @Deprecated,?). To ma dużo więcej sensu.
Scott Biggs

1

IntelliJ IDEA tworzy projekt dla całej bazy kodu, z którą pracujesz, oraz moduł dla każdego z jego poszczególnych składników. Tak więc moduł IntelliJ IDEA jest bardziej podobny do projektu Eclipse, a projekt jest mniej więcej podobny do przestrzeni roboczej Eclipse. Nie ma dokładnego odpowiednika obszaru roboczego Eclipse, który zawiera całą twoją pracę, ale możesz otwierać wiele projektów w wielu ramkach jednocześnie.

Oto strona IntelliJ IDEA z pytaniami i odpowiedziami dla użytkowników Eclipse:

http://www.jetbrains.com/idea/documentation/migration_faq.html


1

Moduły są podobne do apkLibs, tj. Ma własne pliki res, manifest, testy itp., Ale główna aplikacja zwykle używa różnych apklibs / modułów, aby pomóc połączyć to wszystko w jednym rozwiązaniu


-5

Nawiązując do odpowiedzi @Oded Breiner powiedziałbym, że:

moduł w Android Studio jest jak projekt w Eclipse

projekt w Android Studio jest jak zestaw roboczy w Eclipse


1
Nie całkiem. „Zestawy robocze” IMHO w Eclipse to tylko „filtry” dla bieżącego obszaru roboczego. Nie możesz mieć dwóch obszarów roboczych w Eclipse, jak również nie możesz mieć dwóch projektów otwartych w tej samej instancji Android Studio (w rzeczywistości, kiedy otwierasz inny projekt, musisz zamienić pierwszy lub otworzyć drugi w a nowe okno)
ocramot

1
Możesz zasugerować edycję zamiast odsyłania oryginalnej odpowiedzi z niewielkimi zmianami!
kokabi
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.