ndk:就是一个跨平台的,建立c++与java的联系的一个方式
什么用到ndk?
1 代码的保护,防止反编译
2 使用到一些C/C++库时
3 ndk可以执行一些cpu运算高,图形界面
如何配置?
1 环境变量的配置:
E:\eclipse_sdk\adt-bundle-windows-x86_64-20140321\adt-bundle-windows-x86_64-20140321\android-ndk-r10e
把对应的ndk目录配置到系统的path路径下
ndk-build 用于编译生成一个obj目录的.so文件,来使用
2 eclipse里的配置
首先建立eclipse和ndk的联系
然后配置两个工具,javah和javap
一般命令行是这样运行的:
javah用于生成jni目录下的头文件
javap用于签名,签名的用处就是以后便于找到对应的方法等
eclipse中我们这样配置
Run–>External Tools–>External Tools Configuration–>program
右键添加一个
最终配置成:
NDK文件新建的过程:
1 新建Android工程,在工程目录下新建jni目录,然后使用工具generate_header_file,点击MainActivity,运行一下。其中MainActivity文件中必须有native方法,如public static native String getFromC();
,实现java里操作c++/c文件就是这种方法
2 工程代码错误显示提示,一般是不会提示,要加以配置才行
add —到你的E:\eclipse_sdk\adt-bundle-windows-x86_64-20140321\adt-bundle-windows-x86_64-20140321\android-ndk-r10e\platforms\android-19\arch-arm\usr\include添加就行。
然后工程右键点击–AndroidTools–Add native support,会发现生成一些头文件include目录等和jni目录下会有对应的.cpp文件生成。
3 jni目录需要添加Android.mk文件,在com_example_ndk_MainActivity.h(这是一开始生成的头文件,里面包含一些native方法)取出native方法到.cpp/.c使用,进行c/c++文件的操作
Andriod.mk:
#在这里添加一些依赖的库才能实现编译
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ndk
LOCAL_SRC_FILES := NDK.cpp
#for log
LOCAL_LDLIBS += -llog
include $(BUILD_SHARED_LIBRARY)
4 最后调用:
先用静态代码块System.loadLibrary(“libname”);
libname—->Android.mk文件下的MODULE=”name”
public class MainActivity extends Activity {
private TextView text;
public static native String getHello();
static{
System.loadLibrary("ndk");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
text = (TextView)findViewById(R.id.hello);
text.setText(getHello());
}
}
5 在命令行进入该工程目录下,运行ndk-build,然后再运行到设备上。
6 小工程:
链接:http://pan.baidu.com/s/1i4KkibV 密码:sfgv