Erstellen Sie ein Projekt mit "File" "New" "New Projekut" von Android Studio.
Dieses Mal möchte ich C von Java aus aufrufen, also "Native C ++" auswählen und auf "Weiter" klicken, um zum nächsten Bildschirm zu gelangen
Name ist diesmal angemessen "test01"
Geben Sie das zu erstellende Projektverzeichnis mit Speicherort speichern an
Die Sprache wird in "Java" erstellt. Wenn die Einstellungen abgeschlossen sind, klicken Sie auf "Weiter", um den nächsten Bildschirm anzuzeigen.
Wählen Sie hier einfach "Fertig stellen".
(Auf diesem Bildschirm können Sie C ++ 11 oder C ++ 14 verwenden, aber Sie können es später einstellen, also ignorieren Sie es.)
Als ein solcher Bildschirm angezeigt wurde, konnte ich vorerst ein Projekt erstellen.
■ Setp2: Java zu C.MainActivity.java
package l.toox.test01;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
// Used to load the 'native-lib' library on application startup.
static {
System.loadLibrary("native-lib");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Example of a call to a native method
TextView tv = findViewById(R.id.sample_text);
tv.setText(stringFromJNI());
}
/**
* A native method that is implemented by the 'native-lib' native library,
* which is packaged with this application.
*/
public native String stringFromJNI();
public void testFunc(){
}
}
Als nächstes der Teil, der Java aus C liest. Ändern Sie [Native-lib.cpp] wie folgt.
native-lib.cpp
#include <jni.h>
#include <string>
extern "C" JNIEXPORT jstring JNICALL
tugini
JNIEnv *env,
jobject in_thiz) {
jobject my_class = env->NewGlobalRef(in_thiz);
jclass clazz = env->GetObjectClass(my_class);
jmethodID mobj = env->GetMethodID( clazz, "testFunc", "()V" );
env->CallVoidMethod( my_class, mobj );
env->DeleteLocalRef( clazz );
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
(Beachten Sie, dass das Argument jobject in_thiz ist.)
Wenn Sie es damit ausführen, rufen Sie Java von C aus auf.
Während der Debug-Ausführung können Unterbrechungen auftreten.
Recommended Posts