AndroidStudio Verweisen wir auf C ++ im Modul anderer Projekte (Java / Kotlin).

"Siehe C ++ im Android Studio-Modul (Java / Kotlin)" https://qiita.com/sanoh/items/484e61729ab69f250fec

Memorandum of Procedure, um auf das Modul zu verweisen, das in anderen Projekten erstellt wurde

■ Schritt 1: Erstellen Sie ein Projekt

2019-05-30.png Erstellen Sie ein Projekt aus "Datei" "Neu" "Neues Projekt". 2019-05-30 (1).png Wählen Sie "Native C ++" und klicken Sie dann auf "Weiter". 2019-05-30 (2).png Diesmal heißt der Name "test03" Speicherort spezifiziert das Arbeitsverzeichnis Die Sprache gibt "Java" an (Kotklin ist in Ordnung) Klicken Sie nach Abschluss der Einstellungen auf "Weiter", um zum nächsten Bildschirm zu gelangen. 2019-05-30 (3).png "Fertig stellen" schließt die Projekterstellung ab.

■ Schritt 2: Siehe Module anderer Projekte

Bearbeiten Sie settings.gradle, um auf das externe Modul zu verweisen.

settings.gradle


include ':app', ':native-module'
project(':native-module').projectDir = new File(settingsDir, '../test02/test02module')

Bitte passen Sie die Position des test02-Moduls an, auf das Sie sich in diesem Projekt beziehen möchten Wenn Sie hier auf "Jetzt synchronisieren" klicken 2019-05-30 (5).png Sie können sehen, dass es dem Projekt hinzugefügt wurde.

Bearbeiten Sie dann das build.gradle der Anwendung (Modul: App).

build.gradle


android {
  :
  :
}

dependencies {
  :
  :
    implementation project(':native-module')
}

Nachdem wir das native Modul hinzugefügt haben, kann die Anwendung darauf verweisen.

■ Schritt 3: Siehe Anwendung

Registrieren Sie sich in CmakeLists.txt.

python


CmakeList.txt
![2019-05-30 (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/122121/556e419a-8a91-2280-f71a-d034063919f0.png)

# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html

# Sets the minimum version of CMake required to build the native library.

cmake_minimum_required(VERSION 3.4.1)

# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.

add_library( # Sets the name of the library.
        native-lib

        # Sets the library as a shared library.
        SHARED

        # Provides a relative path to your source file(s).
        native-lib.cpp)

include_directories(../../../../../test02/test02module/src/main/cpp)
add_library( native-module
        SHARED
        IMPORTED )
set_target_properties( native-module
        PROPERTIES IMPORTED_LOCATION
        ../../../../../../test02/test02module/src/lib/${ANDROID_ABI}/libnative-module.so)

# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.

find_library( # Sets the name of the path variable.
        log-lib

        # Specifies the name of the NDK library that
        # you want CMake to locate.
        log)

# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.

target_link_libraries( # Specifies the target library.
        native-lib
        native-module
        # Links the target library to the log library
        # included in the NDK.
        ${log-lib})

Verweisen Sie abschließend auf die Klasse im Modul aus native-lib.cpp.

native-lib.cpp


#include <jni.h>
#include <string>

#include "subTest.h"

extern "C" JNIEXPORT jstring JNICALL
Java_l_toox_test03_MainActivity_stringFromJNI(
        JNIEnv *env,
        jobject /* this */) {
    subTest ss;
    ss.Hoge(32);
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}

Recommended Posts

AndroidStudio Verweisen wir auf C ++ im Modul anderer Projekte (Java / Kotlin).
Siehe C ++ im Android Studio-Modul (Java / Kotlin)
Java-Sprache aus der Sicht von Kotlin und C #
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
So leiten Sie den letzten Tag des Monats in Java ab
Beispielcode zum Abrufen der Werte der wichtigsten SQL-Typen in Java + Oracle Database 12c
Die in /lib/calendars.properties von Java jre festgelegte Millisekunde ist UTC
Lassen Sie uns eine TODO-App in Java 5 erstellen. Schalten Sie die Anzeige von TODO um
So ermitteln Sie die Länge einer Audiodatei mit Java
So erhöhen Sie den Wert von Map in einer Zeile in Java
Holen Sie sich das Ergebnis von POST in Java
Versuchen Sie, Project Euler in Java zu lösen
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
So ermitteln Sie die Gesamtzahl der Seiten beim Paging in Java
So erhalten Sie das Datum mit Java
Ausgabe des Buches "Einführung in Java"
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses
Die Geschichte des Schreibens von Java in Emacs
Von Java nach C und von C nach Java in Android Studio
Fassen Sie den Lebenszyklus von Java-Objekten zusammen, die bei der Android-Entwicklung berücksichtigt werden müssen
Stellen Sie sicher, dass der JSON des Schlangenfalls dem Feld des Kamelfalls in Java (JVM) entspricht.
Legen Sie die Quelle der Bibliothek als Abhängigkeit in IntelliJ als separates Modul des Projekts fest
[Java] Ist es nicht erforderlich, "Identität" bei der Implementierung der equals () -Methode zu überprüfen?
Bedingte Verzweigung des Ergebnisses einer SQL-Anweisung, die nur eine in Java durchsucht
Beispielcode zum Abrufen der wichtigsten SQL-Typwerte in Java + MySQL 8.0
Die Geschichte des einfachen String-Vergleichs in Java
[Java] Behandlung von Java Beans in der Methodenkette
Die Geschichte eines gewöhnlichen Othello in Java
Über die Idee anonymer Klassen in Java
Einführung in Kotlin in ein bestehendes Java Maven-Projekt
Die Geschichte des Lernens von Java in der ersten Programmierung
Spüren Sie den Lauf der Zeit auch in Java
[Java / Kotlin] Ändern Sie die Größe unter Berücksichtigung der Ausrichtung des Bildes
Wie schreibe ich Java String # getBytes in Kotlin?
Importieren Sie Dateien derselben Hierarchie in Java
Java Willkommen im Sumpf der zweidimensionalen Arrays
Offline-Echtzeit-Schreibweise Implementierungsbeispiel für das Problem in E05 (Ruby, C11)
Verwendung von UsageStatsManager in Android Studio (Überprüfen der Startzeit anderer Apps)
So erhalten Sie den Klassennamen des Arguments von LoggerFactory.getLogger, wenn Sie SLF4J in Java verwenden
Der Teil, dem ich in "Einführung in Ajax in Java-Webanwendungen" von NetBeans verfallen war
[Java] Anzeigen der von LocalDate und DateTimeformatter erfassten Tage auf Japanisch
Zusammenfassung der Verwendung des im IE festgelegten Proxy-Sets bei der Verbindung mit Java
[Java] So erhalten Sie die URL der Übergangsquelle
Rufen Sie die URL des HTTP-Umleitungsziels in Java ab
[Java] Deklarieren wir die in der Schleife verwendeten Variablen in der Schleife [Variationen im Block]
[Java] So lassen Sie den privaten Konstruktor in Lombok weg
CI die Architektur von Java / Kotlin-Anwendungen mit ArchUnit
Wie schreibe ich Scala aus der Perspektive von Java
Bitte beachten Sie die Aufteilung (Aufteilung) von Java Kotlin Int und Int
Was ist besser, Kotlin oder zukünftiges Java?
Durchsuchen Sie Klassenobjekte in Kotlin (anstelle der Java-Klasse name.class).
[Java] So erhalten Sie den Maximalwert von HashMap
Quelle zum Abrufen der Umleitungsquell-URL in Java
[Java] Holen Sie sich die Datei unabhängig von der Umgebung in das JAR
So setzen Sie BuildConfig des Bibliotheksprojekts (Moduls) auf Debug
Ändern Sie die Speicherqualität von JPEG-Bildern in Java
Zusammenfassung der Implementierung von Standardargumenten in Java
Java: Verwenden Sie Stream, um den Inhalt einer Sammlung zu sortieren
Ich habe versucht, die Methode der gegenseitigen Teilung von Eugrid in Java zu implementieren
Fassen Sie die zusätzlichen Elemente der optionalen Klasse in Java 9 zusammen