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

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:

  1. 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.
  2. 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 mit ndk-build haben und ein Android.mk-Build-Script enthalten ist, überspringen Sie diesen Schritt.
  3. 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 Führen Sie die App dann über die Menüleiste aus..

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:

  1. Wählen Sie im Bereich Projekt auswählen des Assistenten den Projekttyp Natives C++ aus.
  2. Klicken Sie auf Weiter.
  3. Füllen Sie alle anderen Felder im nächsten Abschnitt des Assistenten aus.
  4. Klicken Sie auf Weiter.
  5. 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.
  6. 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.txtund 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 Führen Sie die App dann über die Menüleiste aus. 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:

  1. Gradle ruft Ihr externes Build-Skript CMakeLists.txt auf.
  2. CMake folgt den Befehlen im Build-Skript, um eine C++-Quelldatei (native-lib.cpp) in eine Shared-Object-Bibliothek zu kompilieren und sie libnative-lib.so zu nennen. Gradle packt sie dann in die App.
  3. Während der Laufzeit lädt die MainActivity-Datei der App 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, die "Hello from C++" zurückgibt und damit die TextView aktualisiert.

So prüfen Sie, ob Gradle die native Bibliothek in der App verpackt:

  1. Wählen Sie Build > Build Bundles(s) / APK(s) > Build APK(s) (Build > App-Bundles / APKs erstellen > APKs erstellen) 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, sehen Sie libnative-lib.so im Fenster „APK Analyzer“ unter lib/<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:

  1. Wenn Sie noch kein cpp/-Verzeichnis im Hauptquellsatz Ihrer App haben, erstellen Sie eines:
    1. Öffnen Sie den Bereich Project (Projekt) auf der linken Seite der IDE und wählen Sie im Menü die Ansicht Project (Projekt) aus.
    2. Wechseln Sie zu your-module > src.
    3. Klicken Sie mit der rechten Maustaste auf das main-Verzeichnis und wählen Sie Neu > Verzeichnis 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 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.
  5. Wenn Sie eine Headerdatei erstellen möchten, aktivieren Sie das Kästchen Create an associated header (Zugehörigen Header erstellen).
  6. 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