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. Beim Erstellen Ihres Projekts 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 gleichzeitige 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, lesen Sie den Hilfeartikel Gradle mit Ihrem Native Library-Projekt 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 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 sie Ihrem Android Studio-Projekt hinzu.
    • Überspringen Sie diesen Schritt, wenn Sie bereits nativen Code haben oder eine vorkonfigurierte native Bibliothek importieren möchten.
  2. Konfigurieren Sie CMake, um Ihren nativen Quellcode in eine Bibliothek zu kompilieren. Dieses Build-Script ist erforderlich, wenn Sie vorgefertigte oder Plattformbibliotheken importieren und verknüpfen.
    • Wenn Sie eine vorhandene native Bibliothek haben, die bereits ein CMakeLists.txt-Build-Script hat oder ndk-build verwendet und ein Android.mk-Build-Script enthält, überspringen Sie diesen Schritt.
  3. Konfigurieren Sie Gradle, indem Sie einen Pfad zu Ihrer CMake- oder ndk-build-Scriptdatei angeben. Gradle verwendet das Build-Script, um den Quellcode in Ihr Android Studio-Projekt zu importieren und Ihre native Bibliothek in die App zu verpacken.

Nachdem Sie Ihr Projekt konfiguriert haben, können Sie über das JNI-Framework über Java- oder Kotlin-Code auf Ihre nativen Funktionen zugreifen. Klicken Sie auf Ausführen App über die Menüleiste ausführen, dann ausführen, um Ihre App zu erstellen und auszuführen.

Hinweis:Wenn in Ihrem vorhandenen Projekt das eingestellte ndkCompile-Tool 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. 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 zum Erstellen Ihrer nativen Bibliothek verwendet wird. 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 zum Installieren 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 Bereich 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 Bereich 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 C++-Standardisierung aus, die Sie verwenden möchten. Wenn Sie Toolchain-Standard auswählen, wird die Standardeinstellung von CMake verwendet.
  6. Klicken Sie auf Fertig.

Nachdem Android Studio das neue Projekt erstellt hat, öffnen Sie auf der linken Seite der IDE den Bereich Project (Projekt) und wählen Sie im Menü die Ansicht Android 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, sondern gruppiert ähnliche Dateien, um die Navigation im Projekt zu vereinfachen.

In der Gruppe cpp finden Sie alle nativen Quelldateien, Header, Build-Scripts für CMake oder ndk-build und vorkonfigurierte Bibliotheken, die Teil Ihres Projekts sind. Für neue Projekte erstellt Android Studio eine Beispiel-C++-Quelldatei namens native-lib.cpp und platziert sie im Verzeichnis src/main/cpp/ Ihres App-Moduls. Dieses Beispiel 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 des Moduls. Weitere Informationen zum Inhalt dieses Build-Scripts finden Sie unter CMake konfigurieren.

Beispielanwendung erstellen und ausführen

Wenn Sie auf Ausführen Ausführen und dann App über die Menüleiste ausführen klicken, erstellt und startet Android Studio eine App, die auf Ihrem Android-Gerät oder Emulator den Text „Hallo aus 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, 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 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, das "Hello from C++" zurückgibt und damit TextView aktualisiert.

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, sehen Sie libnative-lib.so im APK Analyzer-Fenster unter lib/<ABI>/.

    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 Datei > Neu > Beispiel importieren 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 im Haupt-Quellsatz Ihrer App noch kein cpp/-Verzeichnis haben, erstellen Sie eines. Gehen Sie dazu so vor:
    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 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 die 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 Dialogfeld Neue Dateiendungen in den Menüs Quellerweiterung und Headererweiterung eine andere Dateiendung aus und klicken Sie auf OK.
  5. Klicken Sie zum Erstellen einer Headerdatei das Kästchen Verknüpften Header erstellen an.
  6. Klicken Sie auf OK.

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

Weitere Informationen

Weitere Informationen zur Unterstützung von C/C++-Code in Ihrer App finden Sie in der folgenden Ressource.

Codelabs