Struttura della build Android

I progetti Android contengono molti file e strutture di directory relativi alla build per organizzare l'origine e le risorse dell'applicazione. Prima di iniziare nei dettagli della configurazione, esamineremo la struttura generale e le nozioni di base di ciò che appartiene a ogni parte.

In questa tabella sono elencati i file tipici di un progetto Android. Le descrizioni di ogni il file o la directory includono note sul tipo di contenuto che contiene. Migliore evolvono nel tempo e queste descrizioni potrebbero non corrispondere a un progetto ereditato o scaricato da internet.

Quando scrivi i file di build, usa un approccio dichiarativo. crea logica e attività le definizioni devono essere visualizzate solo nei plug-in. Limitando la logica di build ai plug-in, i file di build diventano dichiarazioni dei dati, più dirette e l'editing. Le versioni future potrebbero includere una specifica alternativa come Gradle dichiarativo, che impedirà la logica di build nel .

Cartella/file

Usa

.gradle

Directory della cache del progetto Gradle

Gestito da Gradle e contiene la distribuzione Gradle scaricata, la cache del progetto e i file di configurazione.

Non cambiare i file in questa directory.

.idea/

Metadati di progetto Android Studio

Non cambiare i file in questa directory.

build.gradle(.kts)

File di build root

Deve contenere solo dichiarazioni dei plug-in per configurare un classpath del plug-in comune nei sottoprogetti.

L'altro codice deve trovarsi nelle impostazioni o nei file di build nidificati a livello di progetto.

gradle.properties

Configurazione di esecuzione a Gradle

Contiene le proprietà Gradle, che controlla gli aspetti dell'ambiente di build Gradle, come le dimensioni dell'heap, la memorizzazione nella cache e l'esecuzione parallela.

Qui vengono definite alcune proprietà Android temporanee al fine di ridurre le modifiche apportate a AGP DSL man mano che vengono aggiunte e rimosse in un secondo momento.

Gradlew (linux, Mac)

gradlew.bat (Windows)

File Gradle wrapper

Esegui il bootstrap della tua build scaricando una distribuzione Gradle e inoltrandola ai comandi. In questo modo puoi eseguire build senza dover preinstallare Gradle.

proprietà.locali

Configurazione della macchina locale

Contiene proprietà relative alla macchina locale, come la posizione dell'SDK Android.

Escludi questo file dal controllo del codice sorgente.

impostazioni.gradle(.kts)

Inizializzazione build Gradle

Contiene informazioni globali sulla build per l'inizializzazione e la configurazione del progetto Gradle, ad esempio

  • nome progetto
  • elenco di progetti secondari da includere in questa build
  • specifiche dei repository per individuare plug-in e dipendenze
  • il catalogo delle versioni esterne.

Gradle/

🎞 libs.versions.toml

Catalogo delle versioni

Definisce le variabili per le dipendenze e i plug-in utilizzati all'interno della build. Specifica quali versioni vuoi utilizzare qui, garantendo la coerenza tra tutti i progetti secondari del progetto.

🎞 wrapper/

ꛭ gradle‐wrapper.jar

Bootstrapping a Gradle eseguibile

Scarica la distribuzione Gradle specificata (se non esiste) e la esegue, trasmettendo eventuali argomenti

🎞 gradle‐wrapper.properties

Configurazione per il wrapper Gradle

Specifica dove scaricare la distribuzione Gradle (inclusa la versione da utilizzare).

app/

Directory del sottoprogetto

I sottoprogetti (noti come "moduli" in Android Studio) possono creare applicazioni o librerie e potrebbero dipendere da altri sottoprogetti o dipendenze esterne.

app è il nome convenzionale di un sottoprogetto di applicazione di primo livello (ma non è il nome obbligatorio). Altri progetti secondari hanno strutture simili con nomi diversi.

Qualsiasi directory può essere un sottoprogetto, deve contenere almeno un file build.gradle(.kts) ed essere inclusa nella build utilizzando settings.gradle(.kts).

ꛭ build.gradle(.kts)

File di build a livello di sottoprogetto

Dichiara come creare questo sottoprogetto. Ogni sottoprogetto richiede un file di build separato e deve contenere

  • Plug-in utilizzati per creare questo sottoprogetto
  • i blocchi di configurazione richiesti dai plug-in
  • (librerie e piattaforme) incluse durante la creazione di questo sottoprogetto

Non devi includere nei file di build logica di build (ad esempio definizioni o condizioni delle funzioni Kotlin) o dichiarazioni delle attività. La logica e le attività della build devono essere contenute solo all'interno dei plug-in.

🎞 src/

File di origine del sottoprogetto

Raggruppa i file di origine (codice dell'applicazione e risorse) in set di origine. Il set di origini main contiene file di origine comuni a tutte le varianti, mentre gli altri set di origini contengono file di origine univoci per una variante.

ꛭ principale/

Set di origine principale

Codice sorgente e risorse comuni a tutte le varianti della build. Questa sorgente funge da base per tutte le build e altri set di origini più specifici vengono aggiunti o sostituiti.

ꛭ java/

🎞 kotlin/

Codice sorgente di Kotlin e Java

La directory java può contenere codice sorgente misto Java e Kotlin. Se il sottoprogetto contiene solo il codice Kotlin, puoi rinominare la directory kotlin.

Android
è una piattaforma Kotlin-first. Il codice sorgente Java è supportato, ma le nuove API hanno come target il linguaggio Kotlin. Ti consigliamo di utilizzare Kotlin per tutti i nuovi codici e per gli aggiornamenti principali del codice esistente.

ꛭ res/

File di risorse Android

Contiene le risorse dell'applicazione, come le immagini e i file XML. Tutte le applicazioni utilizzano alcune risorse di base, ad esempio le icone di avvio, ma molte di queste risorse, come layout e menu, vengono utilizzate solo nelle applicazioni basate sulla visualizzazione. La scrittura delle applicazioni utilizza le risorse String definite in questa directory.

ꛭ AndroidManifest.xml

Metadati delle app per Android

Letto dal gestore di pacchetti Android per indicare al sistema

  • componenti definiti dalla tua applicazione
  • autorizzazioni necessarie
  • compatibilità del dispositivo
  • Limitazioni della piattaforma Android

🎞 androidTest/

Set di origini di test dispositivo

Contiene un'origine per i test che verranno eseguiti su un emulatore o un dispositivo Android. Questi test hanno accesso a un ambiente Android reale, ma vengono eseguiti più lentamente dei test dell'host.

Tutti i file sorgente nel set di origini main possono essere utilizzati dall'origine in androidTest.

ꛭ test/

Test host set di origine

Contiene il codice sorgente per i test eseguiti localmente in una JVM, a differenza dei test eseguiti su un dispositivo. Questi test sono molto più veloci da eseguire rispetto a quelli del dispositivo. Tuttavia, qualsiasi chiamata di sistema (inclusi i cicli di vita che eseguono l'applicazione) deve essere simulata, simulata, simulata in altro modo o in altro modo.

Tutti i file di origine nel set di origini main possono essere utilizzati dall'origine in fase di test.

🎞 proguard-rules.pro

Regole di configurazione R8

Definisce le regole per controllare la riduzione, l'ottimizzazione e l'offuscamento delle applicazioni. R8 rimuove codice e risorse non necessari, ottimizza le prestazioni di runtime e riduce ulteriormente al minimo il codice rinominando gli identificatori.