您的位置:首页 > 移动开发 > Android开发

(2016-10-28)Android-NDK学习笔记(一)生成简单的SO文件

2016-10-29 15:16 295 查看

本次讲的是在eclipse环境下编译的项目,安卓丢丢,请另寻他法.

1,先开始下一个android-ndk-r10e-windows-x86_64文件;

2,解压

3,配置环境变量,跟java一样。

在cmd中可以运行ndk-build就可以了。

第一步在你的android创建一个native方法。

public static native int getIntFromC();

第二步然后运用cmd命令行。在你的项目根目录下。运行下面的代码。

javah -classpath bin/classes;F:\sdk\platforms\android-20\and

roid.jar -d jni com.liuyun.hellondk.MainActivity

第三步在你的jni目录下。创建一个c语言的文件。比如说hello.c。在你的c文件中可以这样写。

#include<stdil.h>
#include<stdlib.h>
#include"com_liuyun_hellondk_MainActivity.h"

JNIEXPORT jstring JNICALL Java_com_liuyun_hellondk_MainActivity_getStringFromC
(JNIEnv *env, jclass jclass){

return (*env)->NewStringUTF(env,"HEIIIIIIIIIIIIIIIIIIIIIIII");

}

这段代码的意思是从c语言里返回一个字符串。


第四步在jni目录下。创建一个Android.mk文件。在你的Android.mk文件中可以这样写。

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

//这里是你要生成的so文件的名字。
LOCAL_MODULE    := hello

//这里是你的c语言文件的名字。
LOCAL_SRC_FILES := hello.c

include $(BUILD_SHARED_LIBRARY)


第五步在我们写好的安卓项目目录下运行cmd,然后用,ndk-build进行编译.刷新我们的目录就能得到我们的so文件.那么,怎样调用我们的so文件呢!

然后在我们要调用的类里面调用我们的静态代码块儿.

static{
//这里面的hello就是上面生成的so文件的名字,改了名字也没有用,要是我们生成的so文件的名字
System.loadLibrary("hello");
}


最终我们通过getIntFromC();方法,就可以得到我们在c语言里返回的数据了这样就实现了java调用c语言的过程这只是一个简单的过程,接下来我们要简化我们的操作.

本次讲的是在eclipse环境下编译的项目,安卓丢丢,请另寻他法.

首先我们在下图可以看到配置一个ndk的路径



然后在我们的项目下右键Properties新建一个Builder,当然我这里已经创建好了





接下来的配置





接下来点击ok,so文件将会自动编译好你可以更改你C文件里的代码,再次运行将会得到不一样的结果哟.这还是比较简单的

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: