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

Android NDK 配置和实现

2015-08-19 23:25 344 查看
从ndk7以后,无需在配置cygwin等模拟unix/linux操作环境。ndk内部集成了这些功能。

2014年以后,google被封,Android官网无法访问,这里推荐一个国内的映像http://wear.techbrood.com/

NDK环境配置

第一步:NDK下载

http://wear.techbrood.com/tools/sdk/ndk/index.html

下载完成后,直接解包就可以。

第二部:配置eclipse

1、环境变量

Window环境下cmd命令设置

set PATH=%PATH%;F:/java/android-ndk-r10

F:/java/android-ndk-r10是ndk解压后的路径

注意:英文字母,不要出现汉字,切不要有“空格“

2、配置Eclpise

Window-》Preference-》android-》NDK

执行这些之前需要配置好Android开发的基本环境

NDK生成SO文件

第一步:新建Android工程

第二步:在src文件下新建包com.test.classes

第三步:在第二步新建的包下建立class类 JNIClass.java

package com.test.classes;

public class JNIClass {

static{
System.loadLibrary("demo");//一定要注意名称没有“lib"
}

public native int plus(int a,int b);

}


第四步:右键工程选择Android tools-》Android native support……

填入LIB的name,即将来生成so的名字。会自动生成jni文件夹,在文件夹内自动生成demo.cpp和Android.mk文件。

第五步:打开demo.cpp增加

JNIEXPORT jint JNICALL Java_com_test_classes_JNIClass_plus(JNIEnv* env, jobject obj, jint a, jint b)
{
//返回计算结果
return a+b;
}

extern "C"{
JNIEXPORT jint JNICALL Java_com_test_classes_JNIClass_plus(JNIEnv* env, jobject obj, jint a, jint b);
}

Java_com_test_classes_JNIClass_getString是包名+文件名+函数名

若是新建的cpp文件,则必须要带extern ”C“,否则会提示找不到本地实现

第六步:在Activity中调用本地文件

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView  tv = new TextView(this);
tv.setText(new hello().helloFromJni() );
tv.append("\n\r");
tv.append(new JNIClass().plus(9, -10)+"");
setContentView(tv);
}
}


第七步:直接运行工程就会生成so文件。

可以将libs文件下的so文件拷贝到别的工程直接使用。




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