針對剛入門NDK的同學簡化一下入門程式的編寫,哈哈
一、建立NdkTest項目。
二、直接在目錄下建立native方法工具類,友善調用。
三、MainActivity中調用Native方法更新UI。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
NdkUtils ndkUtils=new NdkUtils();
TextView textView=new TextView(this);
textView.setText(ndkUtils.getStrinFromC());
setContentView(textView);
}
}
四、Rebuild Project,檢視目錄下是否生成了相應的class檔案
五、利用AS中的指令視窗Terminal的javah指令生成native方法的頭部檔案 javah -jni 包名.類名,執行指令之後再目前目錄下會生成.h的檔案
六、在main中右鍵建立jni檔案夾,把剛剛生成的.h的頭部檔案剪切到此目錄下,建立名為ndkdemo(随便起)的c檔案,把頭部檔案中的方法複制到該檔案中,改寫傳回資訊
#include <com_cg_ndktest_NdkUtils.h>
/*
* Class: com_cg_ndktest_NdkUtils
* Method: getStrinFromC
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_cg_ndktest_NdkUtils_getStrinFromC
(JNIEnv * env, jobject jject){
return (*env)->NewStringUTF(env,"hello ,My name is JNI Demo");
}
七、在module的build.gradle中配置ndk的相關資訊,點選箭頭右上角,整理編譯,根據錯誤資訊,在配置檔案中加入錯誤資訊
八、記得在MainActivity中導入so檔案庫,運作項目,成功編譯,可以在項目編譯目錄下面找到so檔案庫
static{
System.loadLibrary("ndkdemo");
}
九、得到了so檔案,直接引用so檔案就更簡單了,隻需要在main中建立名為jniLibs的檔案夾,把相應的so檔案都複制進去,隻要包名和方法名都相同,在其他項目中就是這樣麼簡單的引用so庫。