私は、次のファイルをチェックして、私は取得していますエラーをチェックしてください実験のプラグインのAndroidメーカーJNI
を使用していないのAndroid Studioの2.1.2を使用しています。
私はこの問題を解決しました。編集したファイルは以下の通りです。彼らは私がそれを使用するようにプロパティを設定しているので、私はそれが正しい方法ではないかもしれないということを修正しました。実験的なプラグインは依然として不安定です。私はすぐに実験的なプラグインを試してみます。 4つのファイルメイン
のJNIフォルダにあるAndroid.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := mylib
LOCAL_SRC_FILES := HelloJni.cpp
include $(BUILD_SHARED_LIBRARY)
Application.mk
APP_ABI := all
HelloJni以下のモジュール
sourceSets.main {
jniLibs.srcDir 'src/main/libs'
/*jni.srcDirs = [] not using this, I commented this. Please check SO links which explained when to use this and when not to use this*/
}
から
build.gradle .cpp
#include <jni.h>
#include <Header.h>
JNIEXPORT jstring JNICALL Java_com_example_m1035325_ndksampleapp_MainActivity_getStringFromJni(JNIEnv *env,jobject thiz)
{
env-> NewStringUTF ("Hellofrom JNI!");
}
HEADER.H
#include <jni.h>;
using namespace std;
#ifndef HEADER
#define HEADER
extern "C" {
JNIEXPORT jstring JNICALL Java_com_example_m1035325_ndksampleapp_MainActivity_getStringFromJni(JNIEnv *env, jobject obj);
}
#endif //NDKSAMPLEAPP_HEADER_H
ここMainActicity.java
static
{
System.loadLibrary("mylib");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tvHello=(TextView)findViewById(R.id.tvHello);
tvHello.setText(getStringFromJni());
}
public native String getStringFromJni();
それがJNI機能に対応する
私が設定されている解決することはできません示しgetStringFromJni私はこの方法でホバープロジェクト構造内およびパス環境変数内のNDKパス。
私は次のようなエラーに
Process: com.example.m1035325.ndksampleapp, PID: 12831
java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String com.example.m1035325.ndksampleapp.MainActivity.getStringFromJni() (tried Java_com_example_m1035325_ndksampleapp_MainActivity_getStringFromJni and Java_com_example_m1035325_ndksampleapp_MainActivity_getStringFromJni__)
at com.example.m1035325.ndksampleapp.MainActivity.getStringFromJni(Native Method)
を取得しています私はまた、SOに多くのことを探索したが、私は逃したものを得ていないのですか?
上記のエラーは修正されていません。この質問に対する私の答えをチェックしてください。私は問題があなたのAndroid.mkファイル内にあると思い
あなたは 'JNICALL'がありません。署名は' JNIEXPORT jstring JNICALL'、 – marcinj
で始まります。はい。それで合っています。私はファイルに追加しました。上記の私の編集したファイルを確認してください。 – AdiAtAnd