Android studio jni編寫步驟,流程



step1:
下載最新版ndk

Step: 2. 添加native接口
注意寫好native接口和System.loadLibrary()即可了,並無特別之處。
在需要添加native方法的類添加native方法
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

textView = (TextView) findViewById(R.id.tv_hello);
textView.setText(getStringFromNatice());

}

static {
System.loadLibrary("myLib");
}
public native String getStringFromNatice();
}
Step: 3,執行Build->Make Project
這一步驟執行一下,驗證工程中並無其它錯誤,並對工程進行了編譯,生成了.class文件.
.class文件的生成路徑是在 app_path/build/intermediates/classes/debug下的.如下圖:


Step: 4.javah生成c頭文件
點擊"View->Tool Windows->Terminal",即在Studio中進行終端命令行工具.執行如下命令生成c語言頭文件。
這裏需要注意的是要進入 <Project>\app\src\main的目錄下執行javah命令,爲的是生成的 .h 文件同樣是在<Project>\app\src\main路徑下,可以在Studio的工程結構中直接看到。

操作命令:
javah -d jni -classpath <SDK_android.jar>;<APP_classes> com.zzx.jni.MainActivity
在此步驟可能缺少一些類,用分號隔開的形式添加到<SDK_android.jar>即可,也可百度
最後生成文件:

Step: 5.編輯c文件
在main.c 中實現頭方法
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <com_zzx_jni_MainActivity.h>
/* Header for class com_zzx_jni_MainActivity */


JNIEXPORT jstring JNICALL Java_com_zzx_jni_MainActivity_getStringFromNatice
(JNIEnv * env, jobject jObj){
return (*env)->NewStringUTF(env,"Hello From JNI!");
}

util.c 什麼都沒有,是一個空文件
Step: 6,在local.properties添加ndk.dir 目錄


Step: 7,在local.properties添加ndk.dir 目錄
修改build.gradle配置
    工程中共有兩個build.gradle配置文件,我們要修改的是在<Project>\app\build.gradle這個文件。爲其在defaultConfig分支中增加上
defaultConfig {
applicationId "com.zzx.jni"
minSdkVersion 12
targetSdkVersion 23
versionCode 1
versionName "1.0"
ndk{
moduleName "myLib"
abiFilters "armeabi", "armeabi-v7a", "x86"
}
}
 此處moduleName "myLib" 的myLib 爲應用調用的名字
static  {
System.loadLibrary("myLib");
}
public native String getStringFromNatice();

setp:8 再次build-Make project
完成

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