2016-10-21 6 views
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); 
} 

答えて

1

あなたが持っていますCの関数名にタイプミス:

Java_com_sign_signcapture_MainActivity__getToken 

          Right here --^  Remove the extra _ 
関連する問題