Füge deinem Android-Projekt C- und C++-Code hinzu. Platzieren Sie den Code dazu in einem cpp
-Verzeichnis in Ihrem Projektmodul. 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 die Java Native Interface (JNI) aufrufen. Weitere Informationen zur Verwendung des JNI-Frameworks finden Sie in den 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, können Sie Gradle mit Ihrem nativen Bibliotheksprojekt verknüpfen.
Auf dieser Seite wird beschrieben, wie Sie Android Studio mit den erforderlichen Build-Tools einrichten, ein neues Projekt mit Unterstützung für C/C++ erstellen und Ihrem Projekt neue C/C++-Dateien hinzufügen.
Wenn Sie einem vorhandenen Projekt stattdessen nativen Code hinzufügen möchten, gehen Sie so vor:
-
Erstellen Sie neue native Quelldateien und fügen Sie die Dateien Ihrem Android Studio-Projekt hinzu.
- Überspringen Sie diesen Schritt, wenn Sie bereits nativen Code haben oder eine vordefinierte native Bibliothek importieren möchten.
-
Konfigurieren Sie CMake, um Ihren nativen Quellcode in einer Bibliothek zu erstellen. Dieses Build-Script ist erforderlich, wenn Sie vordefinierte oder Plattformbibliotheken importieren und verknüpfen möchten.
- Wenn Sie bereits eine native Bibliothek haben, die bereits ein
CMakeLists.txt
-Build-Skript hat oderndk-build
verwendet und einAndroid.mk
-Build-Skript enthält, können Sie diesen Schritt überspringen.
- Wenn Sie bereits eine native Bibliothek haben, die bereits ein
-
Konfigurieren Sie Gradle. Geben Sie dazu einen Pfad zu Ihrer CMake- oder
ndk-build
-Skriptdatei an. Gradle verwendet das Build-Skript, um Quellcode in Ihr Android Studio-Projekt zu importieren und Ihre native Bibliothek in die App zu verpacken.
Nach der Konfiguration Ihres Projekts können Sie mit dem JNI-Framework über Java- oder Kotlin-Code auf Ihre nativen Funktionen zugreifen. Klicken Sie zum Erstellen und Ausführen der Anwendung auf Ausführen .
Hinweis: Wenn in Ihrem vorhandenen Projekt das verworfene Tool ndkCompile
verwendet wird, führen Sie eine Migration zu CMake oder ndk-build
durch.
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 NDK bietet Plattformbibliotheken, mit denen Sie native Aktivitäten verwalten und auf physische Gerätekomponenten wie Sensoren und Eingabe per Berührung zugreifen können.
-
CMake: Ein externes Build-Tool, das zusammen mit Gradle Ihre native Bibliothek erstellt. Sie benötigen diese Komponente nicht, wenn Sie nur
ndk-build
verwenden möchten. - LLDB: Der Debugger in Android Studio, der nativen Code debuggt.
Informationen zum Installieren dieser Komponenten finden Sie unter NDK und CMake installieren und konfigurieren.
Neues Projekt mit Unterstützung für C/C++ erstellen
Das Erstellen eines neuen Projekts mit Unterstützung für nativen Code ähnelt dem Erstellen eines beliebigen anderen Android Studio-Projekts, umfasst jedoch einen zusätzlichen Schritt:
- Wählen Sie im Abschnitt Projekt auswählen des Assistenten den Projekttyp Native C++ aus.
- Klicke auf Weiter.
- Füllen Sie alle anderen Felder im nächsten Abschnitt des Assistenten aus.
- Klicke auf Weiter.
-
Im Abschnitt C++ Support anpassen des Assistenten können Sie Ihr Projekt mit dem Feld C++ Standard anpassen.
- Wählen Sie in der Drop-down-Liste die gewünschte C++-Standardisierung aus. Wenn Sie Toolchain-Standard auswählen, wird die CMake-Standardeinstellung verwendet.
- Klicken Sie auf Fertig.
Nachdem Android Studio das neue Projekt erstellt hat, öffnen Sie den Bereich Projekt auf der linken Seite der IDE und wählen Sie im Menü die Ansicht Android aus. Wie in Abbildung 1 dargestellt, wird die cpp-Gruppe von Android Studio hinzugefügt:
Hinweis: Diese Ansicht spiegelt nicht die eigentliche Dateihierarchie auf dem Laufwerk wider, sondern gruppiert ähnliche Dateien, um die Navigation in Ihrem Projekt zu vereinfachen.
In der cpp-Gruppe finden Sie alle nativen Quelldateien, Header, Build-Skripts für CMake oder ndk-build
und vordefinierte Bibliotheken, die Teil Ihres Projekts sind. Bei neuen Projekten erstellt Android Studio die C++-Beispieldatei native-lib.cpp
und speichert sie im Verzeichnis src/main/cpp/
Ihres App-Moduls. Dieser Beispielcode stellt die einfache C++-Funktion stringFromJNI()
bereit, die den String "Hello from C++"
zurückgibt. Informationen zum Hinzufügen zusätzlicher Quelldateien zu Ihrem Projekt finden Sie im Abschnitt zum Erstellen neuer nativer Quelldateien.
Ähnlich wie Gradle-Dateien mit build.gradle
-Dateien Anweisungen zum Erstellen Ihrer App, benötigen CMake und ndk-build
ein Build-Script, damit Sie wissen, wie Ihre native Bibliothek erstellt wird. Bei neuen Projekten erstellt Android Studio ein CMake-Build-Skript CMakeLists.txt
und platziert es im Stammverzeichnis des Moduls.
Weitere Informationen zum Inhalt dieses Build-Skripts finden Sie unter CMake konfigurieren.
Beispiel-App erstellen und ausführen
Wenn Sie auf Ausführen klicken, erstellt und startet Android Studio eine App, die auf Ihrem Android-Gerät oder Emulator den Text „Hello from C++“ anzeigt. In der folgenden Übersicht werden die Ereignisse beschrieben, die beim Erstellen und Ausführen der Beispiel-App auftreten:
- Gradle ruft Ihr externes Build-Script
CMakeLists.txt
auf. - CMake folgt den Befehlen im Build-Skript, die C++-Quelldatei
native-lib.cpp
in eine gemeinsam genutzte Objektbibliothek zu kompilieren und gibt ihr den Namenlibnative-lib.so
. Gradle verpackt es dann in die App. - Während der Laufzeit lädt das
MainActivity
der Anwendung die native Bibliothek mitSystem.loadLibrary()
. Die native Funktion der Bibliothek,stringFromJNI()
, ist jetzt für die App verfügbar. -
MainActivity.onCreate()
ruftstringFromJNI()
auf, wodurch"Hello from C++"
zurückgegeben und zum Aktualisieren vonTextView
verwendet wird.
Mit dem APK Analyzer kannst du prüfen, ob Gradle die native Bibliothek in der App packt:
- Wählen Sie Build > Build-Bundles/APK(s) > Build APKs (Build > Build-Bundles/APKs > Build-APKs) 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, wird
libnative-lib.so
im APK Analyzer-Fenster unterlib/<ABI>/
angezeigt.
Tipp:Wenn Sie mit anderen Android-Apps experimentieren möchten, die nativen Code verwenden, klicken Sie auf File > New > Import Sample (Datei > Neu > Beispiel importieren) und wählen Sie in der Liste Ndk ein Beispielprojekt aus.
Neue C/C++-Quelldateien erstellen
Gehen Sie wie folgt vor, um einem vorhandenen Projekt neue C/C++-Quelldateien hinzuzufügen:
- Wenn im Hauptquellsatz Ihrer Anwendung noch kein
cpp/
-Verzeichnis vorhanden ist, erstellen Sie eines so: - Öffnen Sie links in der IDE den Bereich Projekt und wählen Sie im Menü die Ansicht Projekt aus.
- Gehen Sie zu your-module > „src“.
- Klicken Sie mit der rechten Maustaste auf das Verzeichnis main und wählen Sie New > Directory 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 der Quelldatei aus, z. B.
.cpp
.- Klicke auf Dateitypen bearbeiten
, um dem Menü weitere Dateitypen hinzuzufügen, z. B.
.cxx
oder.hxx
. Wählen Sie im Dialogfeld Neue Dateierweiterungen, das sich öffnet, eine andere Dateiendung aus den Menüs Quellerweiterung und Header-Erweiterung und klicken Sie auf OK.
- Klicke auf Dateitypen bearbeiten
, um dem Menü weitere Dateitypen hinzuzufügen, z. B.
- Klicken Sie das Kästchen Verknüpften Header erstellen an, um eine Headerdatei zu erstellen.
- Klicke auf OK.
Nachdem Sie Ihrem Projekt neue C/C++-Dateien hinzugefügt haben, müssen Sie CMake noch so konfigurieren, dass die Dateien in Ihre native Bibliothek aufgenommen werden.
Weitere Informationen
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 erfahren Sie, wie Sie mit der Vorlage „Android Studio CMake“ die Android NDK-Projektentwicklung starten können.