Fügen Sie Ihrem Android-Projekt C- und C++-Code hinzu, indem Sie den Code in ein cpp
-Verzeichnis in Ihrem Projektmodul einfügen. Wenn Sie Ihr Projekt erstellen, wird dieser Code in eine native Bibliothek kompiliert, die Gradle mit Ihrer App verpacken kann. Ihr Java- oder Kotlin-Code kann dann Funktionen in Ihrer nativen Bibliothek über das Java Native Interface (JNI) aufrufen. Weitere Informationen zur Verwendung des JNI-Frameworks finden Sie unter JNI-Tipps für Android.
Android Studio unterstützt CMake, was für plattformübergreifende Projekte nützlich ist.
Android Studio unterstützt auch ndk-build
, das schneller als CMake sein kann, aber nur Android unterstützt. Die Verwendung von CMake und ndk-build
im selben Modul wird derzeit nicht unterstützt.
Wenn Sie eine vorhandene ndk-build
-Bibliothek in Ihr Android Studio-Projekt importieren möchten, erfahren Sie hier, wie Sie Gradle mit Ihrem nativen Bibliotheksprojekt verknüpfen.
Auf dieser Seite erfahren Sie, wie Sie Android Studio mit den erforderlichen Build-Tools einrichten, ein neues Projekt mit C/C++-Unterstützung erstellen und neue C/C++-Dateien zu Ihrem Projekt hinzufügen.
Wenn Sie stattdessen einem bestehenden Projekt nativen Code hinzufügen möchten, gehen Sie so vor:
-
Neue native Quelldateien erstellen und die Dateien dem Android Studio-Projekt hinzufügen.
- Überspringen Sie diesen Schritt, wenn Sie bereits nativen Code haben oder eine vorgefertigte native Bibliothek importieren möchten.
-
Konfigurieren Sie CMake, um Ihren nativen Quellcode in eine Bibliothek zu kompilieren. Dieses Build-Skript ist erforderlich, wenn Sie vordefinierte oder plattformspezifische Bibliotheken importieren und verknüpfen.
- Wenn Sie bereits eine native Bibliothek mit einem
CMakeLists.txt
-Build-Script oder mitndk-build
haben und einAndroid.mk
-Build-Script enthalten ist, überspringen Sie diesen Schritt.
- Wenn Sie bereits eine native Bibliothek mit einem
-
Gradle konfigurieren: Geben Sie einen Pfad zu Ihrer CMake- oder
ndk-build
-Skriptdatei an. Gradle verwendet das Build-Script, um Quellcode in Ihr Android Studio-Projekt zu importieren und Ihre native Bibliothek in die App zu packen.
Nachdem Sie Ihr Projekt konfiguriert haben, können Sie über das JNI-Framework auf Ihre nativen Funktionen aus Java- oder Kotlin-Code zugreifen. Klicken Sie zum Erstellen und Ausführen Ihrer App auf Ausführen .
Hinweis:Wenn in Ihrem vorhandenen Projekt das eingestellte Tool ndkCompile
verwendet wird, migrieren Sie zu CMake oder ndk-build
.
NDK und Build-Tools herunterladen
Zum Kompilieren und Debuggen von nativem Code für Ihre App benötigen Sie die folgenden Komponenten:
- Android Native Development Kit (NDK): Ein Toolset, mit dem Sie C- und C++-Code mit Android verwenden können. Das NDK bietet Plattformbibliotheken, mit denen Sie native Aktivitäten verwalten und auf physische Gerätekomponenten wie Sensoren und Touch-Eingabe zugreifen können.
-
CMake: Ein externes Build-Tool, das zusammen mit Gradle verwendet wird, um Ihre native Bibliothek zu erstellen. Sie benötigen diese Komponente nicht, wenn Sie nur
ndk-build
verwenden möchten. - LLDB: Der Debugger in Android Studio, mit dem nativer Code debuggt wird.
Informationen zur Installation dieser Komponenten finden Sie unter NDK und CMake installieren und konfigurieren.
Neues Projekt mit C/C++-Unterstützung erstellen
Das Erstellen eines neuen Projekts mit Unterstützung für nativen Code ähnelt dem Erstellen eines beliebigen anderen Android Studio-Projekts, es ist jedoch ein zusätzlicher Schritt erforderlich:
- Wählen Sie im Bereich Projekt auswählen des Assistenten den Projekttyp Natives C++ aus.
- Klicken Sie auf Weiter.
- Füllen Sie alle anderen Felder im nächsten Abschnitt des Assistenten aus.
- Klicken Sie auf Weiter.
-
Im Bereich C++-Unterstützung anpassen des Assistenten können Sie Ihr Projekt über das Feld C++-Standard anpassen.
- Wählen Sie in der Drop-down-Liste aus, welche Standardisierung von C++ Sie verwenden möchten. Wenn Sie Toolchain Default (Standard-Toolchain) auswählen, wird die standardmäßige CMake-Einstellung verwendet.
- Klicken Sie auf Fertig.
Nachdem Android Studio das neue Projekt erstellt hat, öffnen Sie den Bereich Project auf der linken Seite der IDE und wählen Sie im Menü die Ansicht Android aus. Wie in Abbildung 1 dargestellt, fügt Android Studio die Gruppe cpp hinzu:
Abbildung 1: Android-Ansichtsgruppen für Ihre nativen Quellen und externen Build-Skripts.
Hinweis:Diese Ansicht spiegelt nicht die tatsächliche Dateihierarchie auf der Festplatte wider, sondern gruppiert ähnliche Dateien, um die Navigation in Ihrem Projekt zu vereinfachen.
In der Gruppe cpp finden Sie alle nativen Quelldateien, Header, Build-Skripts für CMake oder ndk-build
sowie vorgefertigte Bibliotheken, die Teil Ihres Projekts sind. Bei neuen Projekten erstellt Android Studio eine C++-Quelldatei, native-lib.cpp
, und platziert sie im Verzeichnis src/main/cpp/
Ihres App-Moduls. Dieser Beispielcode enthält eine einfache C++-Funktion, stringFromJNI()
, die den String "Hello from C++"
zurückgibt. Im Abschnitt zum Erstellen neuer nativer Quelldateien erfahren Sie, wie Sie Ihrem Projekt zusätzliche Quelldateien hinzufügen.
Ähnlich wie build.gradle
-Dateien Gradle anweisen, wie Ihre App erstellt werden soll, benötigen CMake und ndk-build
ein Build-Script, um zu wissen, wie Ihre native Bibliothek erstellt werden soll. Für neue Projekte erstellt Android Studio ein CMake-Build-ScriptCMakeLists.txt
und platziert es im Stammverzeichnis Ihres Moduls.
Weitere Informationen zum Inhalt dieses Build-Skripts finden Sie unter CMake konfigurieren.
Beispiel-App erstellen und ausführen
Wenn Sie auf Run klicken, erstellt und startet Android Studio eine App, in der auf Ihrem Android-Gerät oder Emulator der Text „Hello from C++“ angezeigt wird. Die folgende Übersicht beschreibt die Ereignisse, die zum Erstellen und Ausführen der Beispiel-App auftreten:
- Gradle ruft Ihr externes Build-Skript
CMakeLists.txt
auf. - CMake folgt den Befehlen im Build-Skript, um eine C++-Quelldatei (
native-lib.cpp
) in eine Shared-Object-Bibliothek zu kompilieren und sielibnative-lib.so
zu nennen. Gradle packt sie dann in die App. - Während der Laufzeit lädt die
MainActivity
-Datei der App die native Bibliothek mitSystem.loadLibrary()
. Die native Funktion der Bibliothek,stringFromJNI()
, ist jetzt für die App verfügbar. -
MainActivity.onCreate()
ruftstringFromJNI()
auf, die"Hello from C++"
zurückgibt und damit dieTextView
aktualisiert.
So prüfen Sie, ob Gradle die native Bibliothek in der App verpackt:
- Wählen Sie Build > Build Bundles(s) / APK(s) > Build APK(s) (Build > App-Bundles / APKs erstellen > APKs erstellen) aus.
- Wählen Sie Build > APK analysieren aus.
- Wählen Sie das APK oder AAB aus dem Verzeichnis
app/build/outputs/
aus und klicken Sie auf OK. - Wie in Abbildung 2 dargestellt, sehen Sie
libnative-lib.so
im Fenster „APK Analyzer“ unterlib/<ABI>/
.Abbildung 2: Suchen Sie mit dem APK Analyzer nach einer nativen Bibliothek.
Tipp:Wenn Sie andere Android-Apps mit nativem Code ausprobieren möchten, klicken Sie auf File > New > Import Sample und wählen Sie ein Beispielprojekt aus der Liste Ndk aus.
Neue C/C++-Quelldateien erstellen
So fügen Sie einem vorhandenen Projekt neue C/C++-Quelldateien hinzu:
- Wenn Sie noch kein
cpp/
-Verzeichnis im Hauptquellsatz Ihrer App haben, erstellen Sie eines: - Öffnen Sie den Bereich Project (Projekt) auf der linken Seite der IDE und wählen Sie im Menü die Ansicht Project (Projekt) aus.
- Wechseln Sie zu your-module > src.
- Klicken Sie mit der rechten Maustaste auf das main-Verzeichnis und wählen Sie Neu > Verzeichnis aus.
- Geben Sie
cpp
als Verzeichnisnamen ein und klicken Sie auf OK. - Klicken Sie mit der rechten Maustaste auf das Verzeichnis
cpp/
und wählen Sie Neu > C/C++-Quelldatei aus. - Geben Sie einen Namen für die Quelldatei ein, z. B.
native-lib
. - Wählen Sie im Menü Typ die Dateiendung für Ihre Quelldatei aus, z. B.
.cpp
.- Klicken Sie auf Dateitypen bearbeiten
, um dem Menü weitere Dateitypen hinzuzufügen, z. B.
.cxx
oder.hxx
. Wählen Sie im Pop-up-Dialogfeld New File Extensions (Neue Dateiendungen) in den Menüs Source Extension (Quellendateiendung) und Header Extension (Header-Dateiendung) eine andere Dateiendung aus und klicken Sie auf OK.
- Klicken Sie auf Dateitypen bearbeiten
- Wenn Sie eine Headerdatei erstellen möchten, aktivieren Sie das Kästchen Create an associated header (Zugehörigen Header erstellen).
- Klicken Sie auf OK.
Nachdem Sie Ihrem Projekt neue C/C++-Dateien hinzugefügt haben, müssen Sie CMake konfigurieren, damit die Dateien in Ihre native Bibliothek aufgenommen werden.
Zusätzliche Ressourcen
Weitere Informationen zur Unterstützung von C/C++-Code in Ihrer App finden Sie in der folgenden Ressource.
Codelabs
- „Hello-CMake“ mit Android Studio erstellen In diesem Codelab wird gezeigt, wie Sie die CMake-Vorlage von Android Studio verwenden, um mit der Entwicklung von Android NDK-Projekten zu beginnen.