Entender estrutura projeto Android é fundamental para desenvolvimento eficiente. Breakdown de arquivos e diretórios críticos em projeto Gradle moderno.
Configuração Nível Raiz
- settings.gradle(.kts): Inclusão projeto, gestão plugins, definições repositórios
- build.gradle(.kts) [Projeto]: Dependências buildscript (AGP, Kotlin), repositórios allprojects
- gradle.properties: Args JVM, constantes versões, feature flags
- gradle/wrapper/gradle-wrapper.properties: Fixação versão Gradle
- .gitignore: Exclui build/, .gradle/, local.properties, *.iml
Módulo App (Tipicamente app/)
Manifest e Core
- src/main/AndroidManifest.xml: Permissões, componentes, intent-filters, metadata
- src/main/java/ ou kotlin/: Pacotes fonte (activities, fragments, ViewModels, repositories, etc.)
Recursos (src/main/res/)
- layout/: Definições UI XML (ConstraintLayout, interop Compose)
- values/: strings.xml, colors.xml, dimens.xml, themes.xml, attrs.xml
- drawable/: Assets vetoriais (XML), raster (PNG/WebP) pastas densidade
- mipmap/: Ícones launcher (camadas adaptive icon)
- xml/: Telas preferências, regras backup, config segurança rede
- raw/: Assets não compilados (JSON, certificados, mídia)
- font/: Fontes TTF/OTF
- anim/ & animator/: Animações view/property
- navigation/: Grafo navegação XML
Configuração Build
- build.gradle(.kts) [Módulo]: Plugins (com.android.application, kotlin-android), namespace, compileSdk, minSdk, targetSdk, dependências, buildTypes, productFlavors, composeOptions, packagingOptions
- proguard-rules.pro: Regras keep R8/ProGuard para reflexão, JNI, libs terceiros
Tipos Módulo Adicionais
- Módulos feature: Entrega dinâmica (sob demanda, instant)
- Módulos library: Código compartilhado (apply plugin: 'com.android.library')
- Módulos teste: Unit (test/), instrumentado (androidTest/)
Gerados e Derivados (Não Commit)
- build/: Todas saídas compilador, fontes geradas, APKs/AABs
- .gradle/: Cache Gradle
- local.properties: Caminho SDK (específico máquina)
- .idea/: Config IDE (commit opcional)
Projetos modernos usam cada vez mais Kotlin DSL (.kts), Jetpack Compose (reduz layout/XML), e catálogos versões (gradle/libs.versions.toml) para gestão dependências.