1.背景Android NDK可以用来编译android的native方法,也可以将c和c++的代码编译成.so文件,让android程序运行。2.NDK安装(linux环境)(1)下载对应的ndk版本,在shell里输入如下命令gedit ~/.bashrc(2)打开bash文件,添加下载的ndk路径NDKROOT=/home/CORPUSERS/28852262/android-ndk-r9cexport PATH=$NDKROOT:$PATH(3)输入如下命令,然后重启shellsource /etc/profile(4)在shell中输入ndk-build,出现如下状态说明安装成功3.jni第一个demon helloworld(1)编写hello-jni.c文件。#include <string.h>
#include <jni.h>/* This is a trivial JNI example where we use a native method
* to return a new VM String. See the corresponding Java source
* file located at:
*
* apps/samples/hello-jni/project/src/com/example/hellojni/HelloJni.java
*/
jstring
Java_com_example_hellojni_HelloJni_aa( JNIEnv* env,
jobject thiz )
{
#if defined(__arm__)
#if defined(__ARM_ARCH_7A__)
#if defined(__ARM_NEON__)
#define ABI "armeabi-v7a/NEON"
#else
#define ABI "armeabi-v7a"
#endif
#else
#define ABI "armeabi"
#endif
#elif defined(__i386__)
#define ABI "x86"
#elif defined(__mips__)
#define ABI "mips"
#else
#define ABI "unknown"
#endif return (*env)->NewStringUTF(env, "Hello from JNI ! Compiled with ABI " ABI ".");
}这个c文件实现输出一个string型函数,注意这里Java_com_example_hellojni_HelloJni_aa我们创建android应用的时候包和函数命名要和这个对应,否则汇报错:native method is not found。如下图(2)编写android.mk文件,相关资源在最后(3)注意文件夹名要是jni,否则ndk不识别(4)shell中进入相关路径下面执行ndk-build(5)将生成的libs文件和已经编号的jni导入工程(6)看下主程序代码,注意注释public class HelloJni extends Activity { TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hello_jni); tv=(TextView)findViewById(R.id.textView1); Button bt2 = (Button)findViewById(R.id.button1); bt2.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
tv.setText(aa());
}
});
}public native String aa();//native方法,对应c文件Java_com_example_hellojni_HelloJni_aa中的aa
static { System.loadLibrary("hello-jni");//注意名字是是libhello-jni.so去掉lib和后缀}
}(7)效果点击按钮:出现一串话最后把工程上传,我的工程是公司的sdk,所以大家用的时候要换成自己的。lib和jni都是通用的,have fun!资源下载,亲测可用!
免费下载地址在 http://linux.linuxidc.com/
用户名与密码都是www.linuxidc.com
具体下载目录在 /2014年资料/3月/17日/Android图文介绍NDK安装及简单jni demon的实现下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm
推荐阅读:使用hello-gl2建立NDK-gdb环境(有源码和无源码调试环境) http://www.linuxidc.com/Linux/2013-06/85935.htm基于Android NDK开发实践案例解析 http://www.linuxidc.com/Linux/2013-03/81676.htm解决不使用Android NDK编译的bin文件No such file or directory问题 http://www.linuxidc.com/Linux/2013-03/80591.htmAndroid NDK :编写清晰的代码结构 http://www.linuxidc.com/Linux/2012-07/66105.htmAndroid开发教程:NDK编译静态库失败 http://www.linuxidc.com/Linux/2012-06/64020.htm更多Android相关信息见Android 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=11使用Git管理本地项目CentOS 6.5 Linux系统定制与封装快速实施脚本相关资讯 Android NDK NDK jni demon
- Mac OS X下配置 Android NDK 开发 (08/09/2015 09:28:04)
- Android NDK 线程回调Java层方法 (02/02/2015 13:48:35)
- 构建Android的交叉编译器、用NDK编 (11/26/2014 17:10:47)
| - Android NDK处理用户交互事件 (03/05/2015 09:00:32)
- Android NDK Revision 10d 发布下 (12/13/2014 08:41:02)
- Android高级教程:使用NDK把彩图转 (11/01/2014 11:01:26)
|
本文评论 查看全部评论 (0)