Qual è l'uso di un file MK di Android?
Il file Android.mk risiede in una sottodirectory del tuo progetto's jni/ directory, e descrive i tuoi sorgenti e le librerie condivise al sistema di compilazione. È davvero un piccolo frammento di makefile GNU che il sistema di compilazione analizza una o più volte. Il file Android.mk è utile per definire impostazioni a livello di progetto che Application.mk, il sistema di compilazione e le tue variabili d'ambiente lasciano indefinite. Può anche sovrascrivere le impostazioni a livello di progetto per moduli specifici.
La sintassi di Android.mk ti permette di raggruppare i tuoi sorgenti in moduli. Un modulo è una libreria statica, una libreria condivisa o un eseguibile autonomo. Puoi definire uno o più moduli in ogni file Android.mk, e puoi usare lo stesso file sorgente in più moduli. Il sistema di compilazione inserisce solo le librerie condivise nel pacchetto della tua applicazione. Inoltre, le librerie statiche possono generare librerie condivise.
Oltre a impacchettare le librerie, il sistema di compilazione gestisce una varietà di altri dettagli per te. Per esempio, non hai bisogno di elencare i file header o le dipendenze esplicite tra i file generati nel tuo file Android.mk. Il sistema di compilazione NDK calcola queste relazioni automaticamente per te. Come risultato, dovresti essere in grado di beneficiare del nuovo supporto per toolchain/piattaforme nelle future versioni di NDK senza dover toccare il tuo file Android.mk.
La sintassi di questo file è molto vicina a quella usata nei file Android.mk distribuiti con l'intero Android Open Source Project. Mentre l'implementazione del sistema di compilazione che li utilizza è diversa, la loro somiglianza è una decisione di progettazione intenzionale volta a rendere più facile per gli sviluppatori di applicazioni riutilizzare il codice sorgente per le librerie esterne.
Fondamentali
Prima di esplorare la sintassi in dettaglio, è utile iniziare a capire le basi di ciò che un file Android.mk contiene. This section uses the Android.mk file in the Hello-JNI sample toward that end, explaining the role that each line in the file plays.
An Android.mk file must begin by defining the LOCAL_PATH variable:
- LOCAL_PATH := $(call my-dir)
This variable indicates the location of the source files in the development tree. Qui, la funzione macro my-dir, fornita dal sistema di compilazione, restituisce il percorso della directory corrente (la directory contenente il file Android.mk stesso).
La linea successiva dichiara la variabile CLEAR_VARS, il cui valore è fornito dal sistema di compilazione.
- include $(CLEAR_VARS)
The CLEAR_VARS variable points to a special GNU Makefile that clears many LOCAL_XXX variables for you, such as LOCAL_MODULE, LOCAL_SRC_FILES, and LOCAL_STATIC_LIBRARIES. Notate che non cancella LOCAL_PATH. Questa variabile deve mantenere il suo valore perché il sistema analizza tutti i file di controllo di compilazione in un unico contesto di esecuzione GNU Make dove tutte le variabili sono globali. Dovete (ri)dichiarare questa variabile prima di descrivere ogni modulo.
In seguito, la variabile LOCAL_MODULE memorizza il nome del modulo che volete costruire. Use this variable once per module in your application.
- LOCAL_MODULE := hello-jni
Each module name must be unique and not contain any spaces. Il sistema di compilazione, quando genera il file finale della libreria condivisa, aggiunge automaticamente il prefisso e il suffisso appropriati al nome che si assegna a LOCAL_MODULE. Per esempio, l'esempio che appare sopra risulta nella generazione di una libreria chiamata libhello-jni.so.
Articoli simili
- Come spostare i file del sistema operativo Windows 10 su un'altra unità (file di programma e file di programma x86 in particolare)
- Come può Android Studio utilizzare i file 'JSON' per creare un'applicazione Android (file APK)?
- Android (sistema operativo): come posso estrarre i contatti come file CSV dal file .backup creato dal backup del mio telefono Android?
- How to read a text file in Android studio when I have the path of that file