阿涛,你要认真对待每一件事,你要潇洒,你要懂自己,要做自己,要成为自己!
Android NDK 路径配置命令:
执行命令后打开配置文件:
如上图,在文件后面加上 export那句话。后面的路径当然要变成你解压ndk的目录。
然后退出终端,再打开一次,在ndk的sample的任何一个例子中进行测试是否配置成功
测试命令:
如上图,依次进入工程更目录,ndk-build测试,配置成功的话会显示生成的 .so文件。
头文件的生成:
终端下进入工程根目录:
我看其他教程上说bin 后面不需要写什么了,可是我操作的适合没有后面的classes找不到对应的文件,也许视情况而定吧。
-d后面是存放生成头文件的文件夹,只能命名为jni.
否则:
再后面是要生成的头文件名,头文件名必须前面是你的三级包名,最后面是你的主程序的名字。
然后输入
ndk-build
没有出错的话会产生相应的so文件。
ok,NDK 的工作基本做完了。
下面我们总结一下NDK 的使用流程:
1:新建Android 工程Test, 包名:com.cozy.man 主程序名:Test
2: 在主程序中声明本地方法
3:编译工程,生成class文件
4:到工程根目录下生成头文件
5:实现头文件的源文件,制作Android.mk文件
6:ndk-build,生成so文件
7:再编译工程,OK了!
代码如下:
主程序:
package com.cozy.man;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class NDKTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
TextView textview=new TextView(this);
textview.setText(stringTestNdk());
setContentView(textview);
}
/*
* 声明本地函数
*/
public native String stringTestNdk();
public native int IntTestNdk();
//加载本地函数
static
{
//名字就是你的源文件名字
System.loadLibrary("com_cozy_man_NDKTest");
}
}
头文件是自动生成的,不再粘贴。
C 的源文件:
#include"com_cozy_man_NDKTest.h"
#include<jni.h>
jstring JNICALL Java_com_cozy_man_NDKTest_stringTestNdk
(JNIEnv *env, jobject thiz)
{
return (*env)->NewStringUTF(env,"Hello NDK!");
}
jint JNICALL Java_com_cozy_man_NDKTest_IntTestNdk
(JNIEnv *env, jobject thiz)
{
return 0;
}
Android.mk文件:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := com_cozy_man_NDKTest
LOCAL_SRC_FILES := com_cozy_man_NDKTest.c
include $(BUILD_SHARED_LIBRARY)