Таємниця: Система структури та побудови проектів Android Studio
Я не знаю, чи це через систему побудови Gradle (я ставлю на це ставку), але я розповім, що я зрозумів до цих пір.
Оновлення 4: 2014/09/11 Додано Шпаргалка для BuildTypes
, Flavors
іVariants
я, нарешті, впевнено пишу це: D)
Оновлення 3: 2014/09/11 Оновлено робочі області та проекти для порівняння, щоб бути точними
Оновлення 2: 2014/04/17 Додано більше деталей до структури проекту AS
Оновлення 1: 2013/07/29 Додано Структуру проекту IntelliJ
Структура проекту IntelliJ (показана в кінці) призначена для IntelliJ із плагіном Android. Однак у студії Android є структура проекту, поділена так:
Структура: Проекти та модулі
модуль в Android Studio - це як проект у Eclipse
проект в Android Studio - це як робоча область в Eclipse (якщо бути точним, робоча область із взаємозалежними проектами)
З документації (Android Studio базується на Intellij IDEA):
Що б ви не робили в IntelliJ IDEA, ви робите це в контексті проекту. Проект - це організаційний підрозділ, який представляє повне програмне рішення.
Ваш готовий продукт може бути розкладений на серію дискретних, ізольованих модулів, але це визначення проекту, яке об'єднує їх і зв'язує їх у більш ціле ціле.
Для Android це означає один проект на додаток та один модуль на бібліотеку та на тестовий додаток.
Якщо ви намагаєтеся створити декілька додатків у межах одного проекту, існує кілька проблем. Це можливо, але якщо ви спробуєте (як я), ви побачите, що майже все розроблено для роботи з одним додатком на проект.
Наприклад, є можливість "відновити проект", що не має сенсу для декількох додатків, багато інших параметрів проекту були б марними, а вбудована система VCS не велика, коли у вас є кілька сховищ.
Структура: Структура папок
Папки верхнього рівня
1. Основний проект
Це буде весь контекст проекту ( Eclipse Land: як робоча область, але обмежується тим, що стосується вашого проекту). Наприклад: HelloWorldProject
якщо назва програми, яку ви подали, булаHelloWorld
2. .idea
Там, де конкретні метадані проекту зберігаються в Android Studio (AS). ( Земля затемнення: project.properties
файл)
3. Модуль проекту
Це власне проект. Наприклад: HelloWorld
якщо ім'я вашої заявки, яке ви дали, було HelloWorld
4. градле
Ось де обертання баночки системи gradle будує систему, тобто ця банка - це те, як AS спілкується з gradle, встановленою в Windows (ОС у моєму випадку).
5. Зовнішні бібліотеки
Це насправді не папка, а місце, де відображаються посилання на бібліотеки ( Eclipse Land: Referenced Libraries). Ось де показана цільова платформа тощо.
[ Побічна примітка. Тут багато хто з нас в Eclipse Land використовували для видалення згаданих бібліотек та виправлення властивостей проекту для виправлення посилань на помилки, пам'ятаєте?]
Детальніше про папку проекту
Це номер №3 у наведеному вище списку. Має наступні підручники
1. будувати
Це має повний вихід make
процесу, тобто class.dex, складені класи та ресурси тощо.
У графічному інтерфейсі Android Studio лише декілька папок. Важливою частиною є те, що ваша R.java знайдена тут, підbuild/source/<flavor>/r/<build type(optional)>/<package>/R.java
2. губки
Це стандартні бібліотеки папки , які ви бачите в затемненні землі теж
3. src
Тут ви бачите лише папку java
та res
папки, які відповідають src
папці та res
папці в Eclipse Land . Це дуже вітається спрощення IMHO.
Примітка до модулів:
Модулі схожі на проекти Eclipse Land . Тут ідея полягає у тому, що у вас є один прикладний проект (Модуль №3 у списку вище) та декілька бібліотечних проектів (як окремі Модулі у глобальній папці проектів (№1 у вищевказаному списку)), від яких залежить проект програми. Як ці бібліотечні проекти можна використовувати повторно в інших додатках, я досі не з'ясував.
[ Побічна примітка: Вся реорганізація має деякі переваги, як спрощення в src папці, але так багато ускладнень. Ускладнення, головним чином, зумовлені ДУЖЕ ДУЖКО тонкою документацією щодо цієї нової верстки проекту.]
Нова система нарощування
Посібник користувача для нової системи збирання
Пояснення ароматів та типів побудови тощо. Про що йде приспів?
CheatSheet для ароматів та типів build
BuildType: debug
і release
є buildTypes
доступні за замовчуванням на всіх проектах. Вони призначені для складання / складання ІДНЬОГО КОДУ для створення різних APK-файлів. Наприклад, на release
APK-коді ви хочете запустити proguard (для обфускування), підписати його своїм ключем (як проти клавіші налагодження), запустити оптимізацію (можливо, за допомогою proguard або інших інструментів), використовувати дещо інше packageNames
(ми використовуємо com.company.product
для release
і com.company.product.debug
для debug
), Ми також використовуємо прапор налагодження ( BuildConfig.DEBUG
), щоб вимкнути ведення журналу в logcat (оскільки це робить додаток повільним) у release
збірках. Це сприяє більш швидкому debug
нарощуванню під час розробки, але також оптимізованій release
збірці для використання в магазині ігор.
Аромат продукту: Ароматизатори за замовчуванням не доступні (або якщо бути точним, аромат за замовчуванням порожній / безіменний). Flavors
може бути безкоштовна версія або платна версія, де вони мають РІЗНИЙ КОД . Вони мають один і той же Main
Кодекс, але різні версії (або відсутні версії) кількох файлів або ресурсів вихідного коду.
BuildVariant: A buildVariant
- це те, що насправді відповідає згенерованому APK. Вони названі так (по порядку) Product Flavor
+ Build Type
=Build Variant
.
Приклад 1: якщо у вас є free
і paid
два аромати. Варіанти збірки, які ви отримаєте, є:
Безкоштовна - налагодження
Безкоштовна версія
- Оплачена - налагодження
Оплачена - реліз
Отже, це 4 можливі конфігурації APK. Кілька конфігурацій не можуть мати сенс в конкретному проекті, але вони є доступні.
Приклад 2: (для нових проектів / без ароматів) У вас є 2 buildVariants
або APK, оскільки аромат за замовчуванням безіменний / порожній:
випуск
налагодження
Папка .idea (1) містить ряд підпапок, головним чином, з внутрішньою інформацією ID IDI IntelEA .
Папка src (2) містить вихідний код файлу MyActivity.java (3), який реалізує функціональність вашої програми. Файл належить до пакету com.example.
Папка res (4) містить різні візуальні ресурси.
Файл layout / main.xml (5) визначає зовнішній вигляд програми, що складається з ресурсів різних типів.
Папка значень (6) призначена для зберігання файлів .xml, що описують ресурси різних типів. На даний момент у папці є файл strings.xml з визначенням рядкових ресурсів. Як ви побачите з розділу Додавання кольору, папка макета може містити, наприклад, дескриптор кольорів.
Папка, що пересувається (7), містить зображення.
Папка gen (8) містить файл R.java (9), який пов'язує візуальні ресурси та вихідний код Java. Як ви побачите з наведених нижче розділів, IntelliJ IDEA підтримує щільну інтеграцію між статичними ресурсами та R.java. Як тільки будь-які ресурси додаються або видаляються, відповідні класи та поля класів у R.java автоматично генеруються або видаляються відповідно. Файл R.java також належить до пакету com.example.