本次讲的是在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,当然我这里已经创建好了