ndk make: *** 沒有規則可以建立
$NDK/ndk-build
出現上面這個錯一般是你的jni檔案中的Android.mk中有不該有的空格
出現這種問題原因可能會很多,我只說我這裡發現的問題
如果出現這種問題請查看Android.mk檔案,把無用的空格全去掉就可以了
=================================================================
android ubuntu jni so 報錯 : java.lang.UnsatisfiedLinkError: stringFromJNI
hello-jni.c
hello-jni.c檔案內容如下:
#include <string.h>
#include <jni.h>
jstring Java_com_gcx_ndkjni_HelloNdkJni_stringFromNDKJNI(
JNIEnv* env,jobject thiz )
{
return (*env)->NewStringUTF(env,
"Hello from NDK JNI !");
}
Java_com_gcx_ndkjni_HelloNdkJni_stringFromNDKJNI
在你的so庫裡面定義的方法需要跟你java工程中的包類名一致才行的(注意:java代碼中的com package中的gcx package中的ndkjni package中的
HelloNdkJni這個類中能夠調用stringFromNDKJNI這個方法)。
Java_com_example_test_hellojni_HelloJni_stringFromJNI( JNIEnv* env,jobject thiz )
則你需要定義一個HelloJni的類,包名為com.example.test.hellojni,然後在HelloJni類中定義native方法tringFromJNI。這樣都會找到相應的函數。
然後開啟cygwin重新編譯:
root@hjm-H61M-DS2:~/workspace/HelloNDKJNI# $NDK/ndk-build
$NDK這個命令因人而異,要看在.basrch當中的環境變數設計,可以看我的前幾篇當中,有介紹。
然後在項目中會多出兩個檔案夾。不用去管它。
最後在
static{
System.loadLibrary("hello-jni");
}
裡面的hello-jni代表libhello-jni.so
這裡確定包的名稱,就可以了