Heim  >  Artikel  >  Backend-Entwicklung  >  Wie rufe ich Java-Methoden von C in Android mithilfe von JNI korrekt auf?

Wie rufe ich Java-Methoden von C in Android mithilfe von JNI korrekt auf?

Barbara Streisand
Barbara StreisandOriginal
2024-11-04 08:57:02807Durchsuche

How To Correctly Call Java Methods From C   in Android Using JNI?

Aufrufen von Java-Methoden aus C in Android

Im Kontext von Java Native Interface (JNI) in Android ist es möglich, Java aufzurufen Methoden aus C-Code während der Ausführung einer nativen Methode, die aus Java aufgerufen wird. Hier ist eine detaillierte Analyse eines von Ihnen bereitgestellten Codeausschnitts, in der das Problem hervorgehoben und eine Lösung bereitgestellt wird:

Problem:
Ihr nativer Code versucht, die Methode „messageMe“ aus dem aufzurufen „the/package/MainActivity“-Klasse mit der Funktion „CallObjectMethod“. Die Fehlermeldung „java.lang.NoSuchMethodError: messageMe“ weist jedoch darauf hin, dass die Methode nicht gefunden wurde.

Analyse:
Das Problem liegt in der Art und Weise, wie Sie das Objekt übergeben zur Funktion „CallObjectMethod“. In Ihrem Code übergeben Sie das „jstr“-Objekt, das eine Java-Zeichenfolge ist, anstelle des „obj“-Objekts, das die Instanz der MainActivity-Klasse ist.

Lösung:
Um Objektmethoden aus C aufzurufen, müssen Sie das Objekt selbst an die Funktion „CallObjectMethod“ übergeben. Der korrigierte Code unten zeigt die Änderung:

<code class="c++">jobject result = env->CallObjectMethod(obj, messageMe, jstr);</code>

Zusätzliche Hinweise:

  • Wenn Ihre Java-Methode eine void-Methode ist, wie in Ihrem Fall, Sie Sie sollten in Ihrem C-Code „CallVoidMethod“ anstelle von „CallObjectMethod“ verwenden.
  • Wenn Sie ein Ergebnis von zurückgeben müssen Wenn Sie Ihre Java-Methode verwenden, müssen Sie auch die JNI-Signatur in Ihrer Header-Datei und den Rückgabetyp in Ihrem Java-Code ändern.

Wenn Sie das oben beschriebene Problem beheben, sollten Sie in der Lage sein, Java erfolgreich aufzurufen Methoden von C in Ihrer Android-Anwendung.

Das obige ist der detaillierte Inhalt vonWie rufe ich Java-Methoden von C in Android mithilfe von JNI korrekt auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn