Aggiungi il codice C e C++ al tuo progetto

Aggiungi il codice C e C++ al tuo progetto Android inserendo il codice in una Directory cpp nel modulo di 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, utile per i progetti multipiattaforma. Android Studio supporta anche ndk-build, che può essere più veloce di CMake ma supporta solo Android. Utilizzare sia CMake sia 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:

  1. Crea nuovi file di origine nativi e aggiungi il file al tuo progetto Android Studio.
    • Ignora questo passaggio se hai già del codice nativo o se vuoi importare una libreria nativa predefinita.
  2. Configura CMake per compilare il codice sorgente nativo in una libreria. Questo script di build è obbligatorio se esegui l'importazione e il collegamento su una piattaforma librerie.
    • Se hai già una libreria nativa con uno script di compilazione CMakeLists.txt o che utilizza ndk-build e include uno script di compilazione Android.mk, salta questo passaggio.
  3. Configura Gradle fornendo un percorso per CMake o ndk-build del file di script. Gradle utilizza lo script di build per importare il codice sorgente Progetto Android Studio e pacchettizza 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 la tua app, fai clic su Esegui Esegui, quindi Esegui app dalla barra dei menu.

Nota: se il tuo progetto esistente utilizza lo strumento ndkCompile deprecato, esegui la migrazione a CMake o ndk-build.

Scarica l'NDK e gli strumenti di creazione

Per compilare e eseguire il debug del codice nativo per la tua app, hai bisogno dei seguenti componenti:

  • Il Native Development Kit (Kit di sviluppo nativo) di Android (NDK): un set di strumenti che consente di utilizzare il codice C e C++ con Android. NDK fornisce librerie di piattaforma che consentono di gestire attività e accedere a componenti fisici del dispositivo, come sensori e di testo.
  • CMake: uno strumento di compilazione esterno che funziona insieme a Gradle per compilare la libreria nativa. Non hai bisogno di questo componente se prevedi di utilizzarlo ndk-build.
  • LLDB: il valore in Android Studio che esegue il debug del codice nativo.

Per informazioni sull'installazione di questi componenti, vedi 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:

  1. Nella sezione Scegli il tuo progetto della procedura guidata, seleziona il tipo di progetto C++ nativo.
  2. Fai clic su Avanti.
  3. Completa tutti gli altri campi nella sezione successiva della procedura guidata.
  4. Fai clic su Avanti.
  5. Nella sezione Personalizza il supporto C++ della procedura guidata, puoi personalizzare del tuo progetto con il campo C++ Standard.
    • Utilizza l'elenco a discesa per selezionare la standardizzazione di C++ che vuoi utilizzare. Se selezioni Toolchain Predefinito, viene utilizzata l'impostazione CMake predefinita.
  6. Fai clic su Fine.

Al termine della creazione del nuovo progetto in Android Studio, 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:

Figura 1. Gruppi di visualizzazioni Android per le origini native ed esterni.

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 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 una build CMake script CMakeLists.txt e lo inserisce nella directory radice del modulo. Per scoprire di più sui contenuti di questo script di build, consulta Configurare CMake.

Crea ed esegui l'app di esempio

Quando fai clic su Esegui Esegui, quindi Esegui app dalla barra dei menu, Android Studio compila e avvia un'app che mostra il testo "Un saluto da C++" sul tuo dispositivo o emulatore Android. La seguente panoramica descrive gli eventi per creare ed eseguire l'app di esempio:

  1. su uno script di build esterno CMakeLists.txt.
  2. CMake segue i comandi nello script di build per compilare un'origine C++ il file native-lib.cpp in una libreria di oggetti condivisa e i relativi nomi libnative-lib.so. Gradle lo pacchettizza quindi nell'app.
  3. Durante il runtime, l'elemento MainActivity dell'app carica lo stato nativo libreria utilizzando System.loadLibrary(). La funzione nativa della libreria, stringFromJNI(), è ora disponibile per l'app.
  4. MainActivity.onCreate() chiama stringFromJNI(), che restituisce "Hello from C++" e lo utilizza per aggiornare TextView.

Per verificare che Gradle pacchettizzi la libreria nativa nell'app, utilizza la classe Strumento di analisi APK:

  1. Seleziona Crea > Creare bundle/APK > Creare APK.
  2. Seleziona Crea > Analizza l'APK.
  3. Seleziona l'APK o l'AAB dalla directory app/build/outputs/ e fai clic su OK.
  4. Come mostrato nella Figura 2, puoi vedere libnative-lib.so nella Finestra di analisi APK in lib/<ABI>/.

    Figura 2. Individua una libreria nativa utilizzando APK Analyzer.

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 come segue:

  1. Se non hai già una directory cpp/ nell'origine principale della tua app, creane uno nel seguente modo:
    1. Apri il riquadro Progetto a sinistra nell'IDE e seleziona la vista Progetto dal menu.
    2. Vai a your-module > src.
    3. Fai clic con il pulsante destro del mouse sulla directory principale e seleziona Nuovo > Google Cloud.
    4. Inserisci cpp come nome della directory e fai clic su OK.

  2. Fai clic con il pulsante destro del mouse sulla directory cpp/ e seleziona Nuovo > File di origine C/C++.
  3. Inserisci un nome per il file di origine, ad esempio native-lib.
  4. Dal 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 sezione Nuove estensioni file che viene visualizzata, seleziona un'altra estensione del file Menu Estensione di origine ed Estensione intestazione e fai clic su OK.
  5. Per creare un file di intestazione, seleziona la casella Crea casella di controllo dell'intestazione associata.
  6. Fai clic su OK.

Dopo aver aggiunto nuovi file C/C++ al tuo progetto, devi ancora configurare CMake in modo che includa i file nella tua libreria nativa.

Risorse aggiuntive

Per scoprire di più sul supporto del codice C/C++ nella tua app, prova la seguente risorsa.

Codelab