0
アンドロイドにndkを持つアプリケーションを使用して、シグネチャを取得してmd5に変換しました。 javahコマンドと.soファイルを使用してndk buildコマンドでjniフォルダを生成しました。しかし、Javaクラスでは、jni参照メソッドを取得することができません。赤い色とアプリは以下のエラーアンドロイドのjniアプリケーションのUnsatisfiedLinkErrorの取得
No implementation found for java.lang.String com.sign.signcapture.MainActivity.getToken() (tried Java_com_sign_signcapture_MainActivity_getToken and Java_com_sign_signcapture_MainActivity_getToken__)
10-21 13:04:18.232: D/AndroidRuntime(9040): Shutting down VM
10-21 13:04:18.232: E/AndroidRuntime(9040): FATAL EXCEPTION: main
10-21 13:04:18.232: E/AndroidRuntime(9040): Process: com.sign.signcapture, PID: 9040
10-21 13:04:18.232: E/AndroidRuntime(9040): java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String com.sign.signcapture.MainActivity.getToken() (tried Java_com_sign_signcapture_MainActivity_getToken and Java_com_sign_signcapture_MainActivity_getToken__)
10-21 13:04:18.232: E/AndroidRuntime(9040): at com.sign.signcapture.MainActivity.getToken(Native Method)
10-21 13:04:18.232: E/AndroidRuntime(9040): at com.sign.signcapture.MainActivity.onCreate(MainActivity.java:17)
10-21 13:04:18.232: E/AndroidRuntime(9040): at android.app.Activity.performCreate(Activity.java:6575)
コードでクラッシュしつつあるとして示すことMainActivity.javaです:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ((TextView) findViewById(R.id.java_sign)).setText(getPackage());
((TextView) findViewById(R.id.jni_sign)).setText(getToken());
}
static {
System.loadLibrary("check-sign");
}
public native String getToken();
// public native String getPackage();
}
チェックsign.c
jstring Java_com_sign_signcapture_MainActivity__getToken(JNIEnv *env, jobject obj,
jobject context) {
char* signValue = getSignatureMd5(env, obj);
return (*env)->NewStringUTF(env, signValue);
}