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

Fügen Sie Ihrem Android-Projekt C- und C++-Code hinzu. Dazu platzieren Sie den Code 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. Mit dem Java- oder Kotlin-Code können dann Funktionen in Ihrer nativen Bibliothek über die Java Native Interface (JNI) aufgerufen werden. Weitere Informationen zur Verwendung des JNI-Frameworks finden Sie in den JNI-Tipps für Android.

Android Studio unterstützt CMake, das für plattformübergreifende Projekte nützlich ist. Android Studio unterstützt auch ndk-build, das zwar schneller als CMake ist, 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 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 nativen Code zu einem vorhandenen Projekt 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-Skript ist erforderlich, wenn Sie vordefinierte oder Plattformbibliotheken importieren und verknüpfen.
    • Wenn Sie bereits eine native Bibliothek haben, die bereits ein CMakeLists.txt-Build-Skript enthält oder ndk-build verwendet und ein Android.mk-Build-Skript enthält, überspringen Sie diesen Schritt.
  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 dein Android Studio-Projekt zu importieren und deine native Bibliothek in die App zu verpacken.

Nach der Konfiguration des Projekts kannst du mit dem JNI-Framework über Java- oder Kotlin-Code auf deine nativen Funktionen zugreifen. Klicken Sie zum Erstellen und Ausführen der Anwendung auf Ausführen App über die Menüleiste ausführen, dann ausführen.

Hinweis:Wenn in Ihrem vorhandenen Projekt das verworfene ndkCompile-Tool verwendet wird, migrieren Sie zu CMake oder ndk-build.

NDK herunterladen und Build-Tools herunterladen

Zum Kompilieren und Debuggen von nativem Code für Ihre Anwendung 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 Berührungseingabe 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 zur Installation dieser Komponenten finden Sie unter NDK und CMake installieren und konfigurieren.

Neues Projekt mit C/C++-Unterstützung erstellen

Zum Erstellen eines neuen Projekts mit Unterstützung für nativen Code ist der Vorgang ähnlich wie beim Erstellen eines anderen Android Studio-Projekts, allerdings mit einem zusätzlichen Schritt:

  1. Wählen Sie im Abschnitt Projekt auswählen des Assistenten den Projekttyp Native 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 Abschnitt C++ Support anpassen des Assistenten können Sie Ihr Projekt über das 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 Standardeinstellung für CMake 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 die Android-Ansicht aus dem Menü aus. Wie in Abbildung 1 gezeigt, 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 dem Laufwerk wider, gruppiert jedoch ä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 vordefinierte Bibliotheken, die Teil Ihres Projekts sind. Für neue Projekte erstellt Android Studio eine C++-Beispieldatei namens native-lib.cpp und speichert sie im Verzeichnis src/main/cpp/ Ihres App-Moduls. Dieser Beispielcode stellt die einfache C++-Funktion stringFromJNI() zur Verfügung, 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 bei build.gradle-Dateien, die Gradle anweisen, die App zu erstellen, benötigen auch CMake und ndk-build ein Build-Skript, das weiß, wie die native Bibliothek erstellt wird. Bei neuen Projekten erstellt Android Studio ein CMake-Build-Skript CMakeLists.txt und speichert es im Stammverzeichnis deines Moduls. Weitere Informationen zum Inhalt dieses Build-Skripts finden Sie unter CMake konfigurieren.

Beispielanwendung erstellen und ausführen

Wenn Sie auf Ausführen App über die Menüleiste ausführen, dann ausführen klicken, erstellt und startet Android Studio eine App, die den Text „Hallo aus C++“ auf Ihrem Android-Gerät oder Emulator anzeigt. In der folgenden Übersicht werden die Ereignisse beschrieben, die beim Erstellen und Ausführen der Beispielanwendung auftreten:

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

Mit dem APK Analyzer können Sie überprüfen, ob Gradle die native Bibliothek in der App verpackt.

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

    Abbildung 2: Mit dem APK Analyzer eine native Bibliothek finden

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 ein Beispielprojekt aus der Liste Ndk aus.

Neue C/C++-Quelldateien erstellen

Gehen Sie wie folgt vor, um neue C/C++-Quelldateien zu einem vorhandenen Projekt hinzuzufügen:

  1. Wenn im Hauptquellsatz Ihrer Anwendung noch kein cpp/-Verzeichnis vorhanden ist, erstellen Sie eines so:
    1. Öffnen Sie den Bereich Project (Projekt) auf der linken Seite der IDE und wählen Sie aus dem Menü die Projektansicht 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 (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 der Quelldatei aus, z. B. .cpp.
    • Klicken Sie auf Dateitypen bearbeiten , um dem Menü andere Dateitypen hinzuzufügen, z. B. .cxx oder .hxx. Wählen Sie im Dialogfeld Neue Dateierweiterungen eine andere Dateiendung aus den Menüs Quellerweiterung und Header-Erweiterung aus und klicken Sie auf OK.
  5. Klicken Sie zum Erstellen einer Headerdatei das Kästchen Verknüpften Header erstellen an.
  6. Klicke auf OK.

Nachdem Sie Ihrem Projekt neue C/C++-Dateien hinzugefügt haben, müssen Sie CMake so konfigurieren, dass die Dateien in Ihre native Bibliothek aufgenommen werden.

Zusätzliche Ressourcen

Weitere Informationen zur Unterstützung von C/C++-Code in Ihrer Anwendung finden Sie hier.

Codelabs