Android NDK使用的小问题

来源:互联网 发布:readonly dos linux 编辑:程序博客网 时间:2024/05/01 23:45

阿涛,你要认真对待每一件事,你要潇洒,你要懂自己,要做自己,要成为自己!


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_NDKTestLOCAL_SRC_FILES := com_cozy_man_NDKTest.cinclude $(BUILD_SHARED_LIBRARY)