android-studio下ndk的配置和簡單JNI調用遇到的問題

最近在學習簡單的JNI的調用,但由於我看的視頻教程是用eclipse作爲IDE的,而我用的是android studio1.5,所以過程中遇到的一些問題(剛剛入門,各種問題很困擾啊!)

所以來分享一下我的解決方法

studio下NDK的配置:請看這篇文章: https://segmentfault.com/a/1190000003999352    (有圖,解釋的挺詳細的,我按這個弄得,成功了)


接下來就是寫代碼過程中的問題了(代碼不多,先將就着看吧(還沒用過markdown編輯器敲打))


這是會被調用的C代碼

#include "Hello.h"

#include <stdio.h>
#include <jni.h>
jstring Java_com_example_gw_helloworldfromc_MainActivity_helloWorldFromC(JNIEnv* env,jobject obj){
return (*env)->NewStringUTF(env,"hello-world-from-c");
}
注意 Java一定要大寫,後面是java調用(public native。。。)c函數的方法名所在

的路徑(注意:路徑一定要正確,最後的方法名和java中調用使用的方法名要完全一致,

否則會爆找不到native方法的錯誤)

c代碼有時也是紅色報錯也一樣可以正確運行(這個報錯真是無奈的,搞了很長時間才發現,原來可以直接運行)

有時要在jni中在建一個空的.c文件才能編譯通過



這是在java文件中調用C的代碼

static {
System.loadLibrary("hello");//導入庫,名字要一致
}
public native String helloWorldFromC();//即便能正確編譯運行這個方法名也是顯示爲紅色(android studio1.5), 不用處理這個報錯也能能正確運行,不知道爲啥


注意c函數庫的導入要和build-gradle中命名的庫名一致

很多問題還不知道解決的原理是什麼,歡迎大家指教微笑




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章