不知道为什么android的ndk开发资料在网上很少,还有的资料基本上无法完成入门学习demo,根本无法运行,小弟用了三天三夜的时间来弄helloworld,极尽失眠的程度。
一开始是在android studio上配置ndk开发幻镜,然后是进行hello world的开发,但是android studio支持ndk开发相对较晚,没有elipse成熟,在编译的时候遇到很多问题,最终放弃(我知道这不是一个好习惯,但是等以后我还会回来的)
注:ndk在gradle上的配置
http://gradle.org/getting-started-android/#buildauthor
http://ph0b.com/android-studio-gradle-and-ndk-integration/
在这里唠叨一句,使用android studio,那么有必要加强下对gradle的理解。
开始在eclipse上进行ndk开发:
简述1.创建空android项目
2. 书写一个本地类,定义一个空的本地方法。如 public static native String getStr();
3. 切换到项目src目录下,我的是home/dlzh/workspace/HelloNDK/src,然后执行javah -jni com.example.hellondk.GetString,之后在该目录下生成一个.h文件
4.HelloNdk.c文件写实现native方法
5.加载so文件,运行。
详细步骤如下:
1.创建一个空的android项目
2.编写一个本地GetString.class
public class GetString {
//本地代码实现
public static native String getStr(); //定义本地方法,由c语言实现
}
3.鼠标右键点击项目名称,然后选择“build project”;在项目的下面会自动生成jni和libs文件夹,然后右键项目,选择Android tools--》add native support。
4.然后ubuntu切换到项目的src目录下,执行javah -jni com.example.hellondk.GetString命令,回车。将生成的com_example_hellondk_GetString.h,拷贝到jni文件加下
5.打开jni文件夹下的HelloNdk.c文件,实现头文件生命的方法
#include <jni.h>
#include<com_example_hellondk_GetString.h>
/*
* 实现头文件方法
*/
JNIEXPORT jstring JNICALL Java_com_example_hellondk_GetString_getStr
(JNIEnv *env, jclass){
return env->NewStringUTF("static method call hello Ndk !");
}
然后在GetString.java下添加如下代码,加载so文件
static{
System.loadLibrary("HelloNDK");
}
6.然后
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) findViewById(R.id.textview);
tv.setText(GetString.getStr());
}
}
7.运行