Android NDK使用的小问题

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


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)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值