Aggiungi codice C e C++ al tuo progetto Android inserendolo in una directory cpp
nel modulo del progetto. Quando crei il progetto, questo codice viene compilato in una libreria nativa che Gradle può pacchettizzare con la tua app. Il codice Java o Kotlin può quindi chiamare le funzioni nella libreria nativa tramite l'interfaccia nativa Java (JNI). Per scoprire di più sull'utilizzo del framework JNI, consulta i suggerimenti 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 progetto Android Studio, scopri come collegare Gradle al progetto della libreria nativa.
Questa pagina mostra come configurare Android Studio con gli strumenti di compilazione 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 aggiungili al progetto Android Studio.
- Salta questo passaggio se hai già il codice nativo o se vuoi importare una libreria nativa precompilata.
-
Configura CMake per compilare il codice sorgente nativo in una libreria. Questo script di compilazione è obbligatorio se importi e esegui il collegamento a librerie predefinite o della piattaforma.
- Se hai già una libreria nativa con uno script di compilazione
CMakeLists.txt
o che utilizzandk-build
e include uno script di compilazioneAndroid.mk
, salta questo passaggio.
- Se hai già una libreria nativa con uno script di compilazione
-
Configura
Gradle fornendo il percorso del file script CMake o
ndk-build
. Gradle utilizza lo script di compilazione per importare il codice sorgente nel progetto Android Studio e pacchettizzare la libreria nativa nell'app.
Dopo aver configurato il progetto, accedi alle funzioni native dal codice Java o Kotlin utilizzando il framework JNI. Per compilare ed eseguire l'app, fai clic su Esegui .
Nota: se il tuo progetto esistente utilizza lo strumento ndkCompile
deprecato, esegui la migrazione a CMake o ndk-build
.
Scarica gli strumenti NDK e di compilazione
Per compilare e eseguire il debug del codice nativo per la tua app, hai bisogno dei seguenti componenti:
- Il Native Development Kit (NDK) per Android: un set di strumenti che ti consente di utilizzare il codice C e C++ con Android. NDK fornisce librerie di piattaforma che ti consentono di gestire le attività native e di accedere ai componenti fisici del dispositivo, come i sensori e l'input tocco.
-
CMake: uno strumento di compilazione esterno che funziona insieme a Gradle per compilare la 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 Installare e configurare NDK e CMake.
Creare un nuovo progetto con il supporto di C/C++
Per creare un nuovo progetto con il supporto del codice nativo, la procedura è simile alla 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.
- Fai clic su Avanti.
- Completa tutti gli altri campi nella sezione successiva della procedura guidata.
- Fai clic su Avanti.
-
Nella sezione Personalizza il supporto C++ della procedura guidata, puoi personalizzare il progetto con il campo Standard C++.
- Utilizza l'elenco a discesa per selezionare la standardizzazione di C++ che vuoi utilizzare. Se selezioni Toolchain Predefinito, viene utilizzata l'impostazione CMake predefinita.
- Fai clic su Fine.
Quando Android Studio ha terminato di creare il 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 la navigazione nel progetto.
Nel gruppo cpp puoi trovare tutti i file di codice sorgente, gli header, gli script di compilazione 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 colloca
nella directory src/main/cpp/
del modulo dell'app. Questo codice
di esempio fornisce una semplice funzione C++, stringFromJNI()
, che
restituisce la stringa "Hello from C++"
. Scopri come aggiungere altri
file di origine al progetto nella sezione su come
creare nuovi file di origine nativi.
In modo simile a come i file build.gradle
indicano a Gradle come compilare la tua app, CMake e ndk-build
richiedono uno script di compilazione per sapere come compilare la tua libreria nativa. Per i nuovi progetti, Android Studio crea uno script di compilazione CMakeCMakeLists.txt
e lo inserisce nella directory principale del modulo.
Per scoprire di più sui contenuti di questo script di compilazione, consulta Configura CMake.
Crea ed esegui l'app di esempio
Quando fai clic su Esegui , Android Studio compila e avvia un'app che mostra il testo "Un saluto da C++" sul tuo dispositivo o emulatore Android. La panoramica che segue descrive gli eventi che si verificano per compilare ed eseguire l'app di esempio:
- Gradle chiama lo script di build esterno,
CMakeLists.txt
. - CMake segue i comandi nello script di compilazione per compilare un file di codice sorgente C++,
native-lib.cpp
, in una libreria di oggetti condivisi e assegna il nomelibnative-lib.so
. Gradle lo pacchettizza quindi nell'app. - Durante l'esecuzione,
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 APK Analyzer:
- Seleziona Compila > Compila pacchetti/APK > Compila APK.
- Seleziona Build > Analizza APK.
- Seleziona l'APK o l'AAB dalla directory
app/build/outputs/
e fai clic su OK. - Come mostrato nella figura 2, puoi vedere
libnative-lib.so
nella finestra APK Analyzer inlib/<ABI>/
.
Suggerimento:se vuoi fare esperimenti con altre app per Android che utilizzano codice nativo, fai clic su File > Nuovo > Importa Sample e seleziona un progetto di esempio dall'elenco Ndk.
Creare nuovi file di origine C/C++
Per aggiungere nuovi file di origine C/C++ a un progetto esistente, procedi nel seguente modo:
- Se non hai ancora una directory
cpp/
nell'insieme di origine principale della tua app, creane una nel seguente modo: - 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 tasto destro del mouse sulla directory principale e seleziona Nuova > 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
per il 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 Nuove estensioni file visualizzata, seleziona un'altra estensione file dai menu Estensione 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 ancora 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
- Creare Hello-CMake con Android Studio Questo codelab mostra come utilizzare il modello CMake di Android Studio per iniziare sviluppando un progetto Android NDK.