File e struttura cartelle essenziali per progetti Android
Comprendere la struttura del progetto Android è fondamentale per uno sviluppo efficiente. Ecco la scomposizione dei file e delle directory critici in un progetto moderno basato su Gradle.
Configurazione a livello root
- settings.gradle(.kts): Inclusione progetti, gestione plugin, definizioni repository
- build.gradle(.kts) [Progetto]: Dipendenze buildscript (AGP, Kotlin), repository allprojects
- gradle.properties: Argomenti JVM, costanti di versione, feature flag
- gradle/wrapper/gradle-wrapper.properties: Pinning versione Gradle
- .gitignore: Esclude build/, .gradle/, local.properties, *.iml
Modulo App (tipicamente app/)
Manifest e Core
- src/main/AndroidManifest.xml: Autorizzazioni, componenti, intent-filter, metadati
- src/main/java/ o kotlin/: Pacchetti sorgente (attività, frammenti, ViewModel, repository, ecc.)
Risorse (src/main/res/)
- layout/: Definizioni UI XML (ConstraintLayout, interop Compose)
- values/: strings.xml, colors.xml, dimens.xml, themes.xml, attrs.xml
- drawable/: Asset vettoriali (XML), raster (PNG/WebP) in cartelle densità
- mipmap/: Icone launcher (layer icona adattiva)
- xml/: Schermate preferenze, regole backup, configurazione sicurezza rete
- raw/: Asset non compilati (JSON, certificati, media)
- font/: Font TTF/OTF
- anim/ & animator/: Animazioni View/property
- navigation/: Grafico navigazione XML
Configurazione build
- build.gradle(.kts) [Modulo]: Plugin (com.android.application, kotlin-android), namespace, compileSdk, minSdk, targetSdk, dipendenze, buildTypes, productFlavors, composeOptions, packagingOptions
- proguard-rules.pro: Regole keep R8/ProGuard per reflection, JNI, librerie di terze parti
Altri tipi di modulo
- Moduli funzionalità: Consegna dinamica (su richiesta, istantanea)
- Moduli libreria: Codice condiviso (apply plugin: 'com.android.library')
- Moduli test: Unitari (test/), instrumentati (androidTest/)
Generati e derivati (non commitare)
- build/: Tutti gli output del compilatore, sorgenti generati, APK/AAB
- .gradle/: Cache Gradle
- local.properties: Percorso SDK (specifico per macchina)
- .idea/: Configurazione IDE (commit opzionale)
I progetti moderni usano sempre più Kotlin DSL (.kts), Jetpack Compose (riduce layout/XML) e cataloghi di versioni (gradle/libs.versions.toml) per la gestione delle dipendenze.