Ihrem Projekt C- und C++-Code hinzufügen

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:

  1. 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.
  2. 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 oder ndk-build verwendet und ein Android.mk-Build-Skript enthält, können Sie diesen Schritt überspringen.
  3. 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 ausführen und dann über die Menüleiste 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:

  1. Wählen Sie im Abschnitt Projekt auswählen des Assistenten den Projekttyp Native C++ aus.
  2. Klicke auf Weiter.
  3. Füllen Sie alle anderen Felder im nächsten Abschnitt des Assistenten aus.
  4. Klicke auf Weiter.
  5. 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.
  6. 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:

Abbildung 1: Android-Ansichtsgruppen für Ihre nativen Quellen und externen Build-Skripts.

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 ausführen und dann über die Menüleiste 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:

  1. Gradle ruft Ihr externes Build-Script CMakeLists.txt auf.
  2. CMake folgt den Befehlen im Build-Skript, die C++-Quelldatei native-lib.cpp in eine gemeinsam genutzte Objektbibliothek zu kompilieren und gibt ihr den Namen libnative-lib.so. Gradle verpackt es dann in die App.
  3. Während der Laufzeit lädt das MainActivity der Anwendung die native Bibliothek mit System.loadLibrary(). Die native Funktion der Bibliothek, stringFromJNI(), ist jetzt für die App verfügbar.
  4. MainActivity.onCreate() ruft stringFromJNI() auf, wodurch "Hello from C++" zurückgegeben und zum Aktualisieren von TextView verwendet wird.

Mit dem APK Analyzer kannst du prüfen, ob Gradle die native Bibliothek in der App packt:

  1. Wählen Sie Build > Build-Bundles/APK(s) > Build APKs (Build > Build-Bundles/APKs > Build-APKs) aus.
  2. Wählen Sie Build > APK analysieren aus.
  3. Wählen Sie das APK oder AAB aus dem Verzeichnis app/build/outputs/ aus und klicken Sie auf OK.
  4. Wie in Abbildung 2 dargestellt, wird libnative-lib.so im APK Analyzer-Fenster unter lib/<ABI>/ angezeigt.

    Abbildung 2: Suchen Sie mithilfe des APK Analyzer nach einer nativen Bibliothek.

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:

  1. Wenn im Hauptquellsatz Ihrer Anwendung noch kein cpp/-Verzeichnis vorhanden ist, erstellen Sie eines so:
    1. Öffnen Sie links in der IDE den Bereich Projekt und wählen Sie im Menü die Ansicht Projekt aus.
    2. Gehen Sie zu your-module > „src“.
    3. Klicken Sie mit der rechten Maustaste auf das Verzeichnis main und wählen Sie New > Directory aus.
    4. Geben Sie cpp als Verzeichnisnamen ein und klicken Sie auf OK.

  2. Klicken Sie mit der rechten Maustaste auf das Verzeichnis cpp/ und wählen Sie Neu > C/C++-Quelldatei aus.
  3. Geben Sie einen Namen für die Quelldatei ein, z. B. native-lib.
  4. 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.
  5. Klicken Sie das Kästchen Verknüpften Header erstellen an, um eine Headerdatei zu erstellen.
  6. 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