Aggiungi il codice C e C++ al tuo progetto Android inserendolo in una
directory cpp
nel modulo del progetto. Quando crei il tuo progetto, questo codice viene compilato in una libreria nativa che Gradle può pacchettizzare con la tua app. Il tuo codice Java o Kotlin può quindi chiamare funzioni nella tua libreria nativa tramite JNI (Java Native Interface). Per scoprire di più sull'utilizzo del framework JNI, leggi i suggerimenti su JNI per Android.
Android Studio supporta CMake, che è utile per i progetti multipiattaforma.
Android Studio supporta anche ndk-build
, che
può essere più veloce di CMake, ma supporta solo Android. L'utilizzo sia di CMake sia di ndk-build
nello stesso modulo non è attualmente supportato.
Per importare una libreria ndk-build
esistente nel tuo progetto Android Studio, scopri come collegare Gradle al tuo progetto di libreria nativa.
Questa pagina mostra come configurare Android Studio con gli strumenti di creazione necessari, creare un nuovo progetto con il supporto di C/C++ e aggiungere nuovi file C/C++ al progetto.
Se invece vuoi aggiungere codice nativo a un progetto esistente, segui questi passaggi:
-
Crea nuovi file di origine nativi e aggiungi i
file al tuo progetto Android Studio.
- Ignora questo passaggio se hai già del codice nativo o vuoi importare una libreria nativa predefinita.
-
Configura CMake per creare il tuo codice sorgente nativo in una libreria. Questo script di build è obbligatorio se esegui l'importazione e il collegamento a librerie predefinite o della piattaforma.
- Se hai già una libreria nativa che già dispone di uno script di build
CMakeLists.txt
o utilizzandk-build
e include uno script di buildAndroid.mk
, salta questo passaggio.
- Se hai già una libreria nativa che già dispone di uno script di build
-
Configura Gradle fornendo un percorso al tuo file di script CMake o
ndk-build
. Gradle utilizza lo script di build per importare il codice sorgente nel tuo progetto Android Studio e pacchettizzare la tua libreria nativa nell'app.
Dopo aver configurato il progetto, accedi alle funzioni native dal codice Java o Kotlin utilizzando il framework JNI. Per creare ed eseguire l'app, fai clic su Esegui .
Nota: se il tuo progetto esistente utilizza lo strumento deprecato ndkCompile
, esegui la migrazione utilizzando CMake o ndk-build
.
Scarica l'NDK e crea gli strumenti
Per compilare ed eseguire il debug del codice nativo dell'app, sono necessari i seguenti componenti:
- Il Native Development Kit (NDK) Android: un set di strumenti che consente di utilizzare il codice C e C++ con Android. NDK fornisce librerie di piattaforme che ti consentono di gestire le attività native e di accedere ai componenti fisici dei dispositivi, come sensori e input tocco.
-
CMake: uno strumento di creazione esterno che funziona insieme a Gradle per creare la tua libreria nativa. Questo componente non è necessario se prevedi di utilizzare solo
ndk-build
. - LLDB: il debugger in Android Studio che esegue il debug del codice nativo.
Per informazioni sull'installazione di questi componenti, consulta Installazione e configurazione di NDK e CMake.
Creare un nuovo progetto con l'assistenza per C/C++
Per creare un nuovo progetto che supporti il codice nativo, la procedura è simile a quella della creazione di qualsiasi altro progetto Android Studio, ma con un passaggio aggiuntivo:
- Nella sezione Scegli il tuo progetto della procedura guidata, seleziona il tipo di progetto C++ nativo.
- Tocca Avanti.
- Completa tutti gli altri campi nella sezione successiva della procedura guidata.
- Tocca Avanti.
-
Nella sezione Personalizza l'assistenza C++ della procedura guidata, puoi personalizzare il progetto con il campo C++ Standard.
- Utilizza l'elenco a discesa per selezionare la standardizzazione di C++ che vuoi utilizzare. Se selezioni Toolchain predefinita, viene utilizzata l'impostazione predefinita CMake.
- Fai clic su Fine.
Dopo che Android Studio ha completato la creazione del nuovo progetto, apri il riquadro Progetto sul lato sinistro dell'IDE e seleziona la visualizzazione Android dal menu. Come mostrato nella Figura 1, Android Studio aggiunge il gruppo cpp:
Nota: questa visualizzazione non riflette la gerarchia effettiva dei file sul disco, ma raggruppa file simili per semplificare l'esplorazione del progetto.
Nel gruppo cpp puoi trovare tutti i file di origine, le intestazioni, gli script di build per CMake o ndk-build
e le librerie predefinite che fanno parte del tuo progetto. Per i nuovi progetti, Android Studio crea un file di origine C++ di esempio, native-lib.cpp
, e lo inserisce nella directory src/main/cpp/
del modulo dell'app. Questo codice di esempio fornisce una funzione C++ semplice, stringFromJNI()
, che restituisce la stringa "Hello from C++"
. Scopri come aggiungere ulteriori file di origine al tuo progetto nella sezione su come creare nuovi file di origine nativi.
In modo simile a come i file build.gradle
indicano a Gradle come creare la tua app, CMake e ndk-build
richiedono uno script di build per sapere come creare la tua libreria nativa. Per i nuovi progetti, Android Studio crea uno script di build CMake CMakeLists.txt
e lo inserisce nella directory root del modulo.
Per saperne di più sui contenuti di questo script di build, consulta Configurare CMake.
Crea ed esegui l'app di esempio
Quando fai clic su Esegui , Android Studio crea e avvia un'app che mostra il testo "Ciao da C++" sul tuo emulatore o dispositivo Android. La panoramica seguente descrive gli eventi che si verificano per creare ed eseguire l'app di esempio:
- Chiamate Gradle sul tuo script di build esterno,
CMakeLists.txt
. - CMake segue i comandi nello script di compilazione per compilare un file di origine C++,
native-lib.cpp
, in una libreria di oggetti condivisa, denominandololibnative-lib.so
. Gradle lo pacchettizza nell'app. - Durante il runtime,
MainActivity
dell'app carica la libreria nativa utilizzandoSystem.loadLibrary()
. La funzione nativa della libreria,stringFromJNI()
, è ora disponibile per l'app. -
MainActivity.onCreate()
chiamastringFromJNI()
, che restituisce"Hello from C++"
e lo utilizza per aggiornareTextView
.
Per verificare che Gradle pacchettizzi la libreria nativa nell'app, utilizza lo Strumento di analisi APK:
- Seleziona Build > Build bundle/APK/s) > Build APK(s).
- Seleziona Crea > Analizza APK.
- Seleziona l'APK o l'AAB dalla directory
app/build/outputs/
e fai clic su OK. - Come mostrato nella Figura 2, puoi visualizzare
libnative-lib.so
nella finestra dello strumento di analisi APK inlib/<ABI>/
.
Suggerimento: se vuoi sperimentare altre app per Android che utilizzano codice nativo, fai clic su File > Nuovo > Importa esempio e seleziona un progetto di esempio dall'elenco Ndk.
Crea nuovi file di origine C/C++
Per aggiungere nuovi file di origine C/C++ a un progetto esistente, procedi come segue:
- Se non hai già una directory
cpp/
nel set di origine principale dell'app, creane una come segue: - Apri il riquadro Progetto sul lato sinistro dell'IDE e seleziona la visualizzazione Progetto dal menu.
- Vai a your-module > src.
- Fai clic con il pulsante destro del mouse sulla directory main e seleziona Nuovo > Directory.
- Inserisci
cpp
come nome della directory e fai clic su OK. - Fai clic con il tasto destro del mouse sulla directory
cpp/
e seleziona Nuovo > File di origine C/C++. - Inserisci un nome per il file di origine, ad esempio
native-lib
. - Nel menu Tipo, seleziona l'estensione
del file di origine, ad esempio
.cpp
.- Fai clic su Modifica tipi di file
per aggiungere altri tipi di file al menu, ad esempio
.cxx
o.hxx
. Nella finestra di dialogo Nuova estensione dei file visualizzata, seleziona un'altra estensione del file dai menu Estensione di origine ed Estensione intestazione e fai clic su OK.
- Fai clic su Modifica tipi di file
per aggiungere altri tipi di file al menu, ad esempio
- Per creare un file di intestazione, seleziona la casella di controllo Crea un'intestazione associata.
- Fai clic su OK.
Dopo aver aggiunto nuovi file C/C++ al progetto, devi comunque configurare CMake per includere i file nella libreria nativa.
Risorse aggiuntive
Per scoprire di più sul supporto del codice C/C++ nella tua app, prova la seguente risorsa.
Codelab
- Crea Hello-CMake con Android Studio Questo codelab mostra come utilizzare il modello CMake di Android Studio per avviare lo sviluppo di un progetto NDK per Android.