android图文介绍NDK安装及简单jni demon的实现
来源:互联网 发布:js鼠标拖动事件 编辑:程序博客网 时间:2024/05/18 05:56
(转载请注明出处:http://blog.csdn.net/buptgshengod)
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)输入如下命令,然后重启shell
source /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 */jstringJava_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文件,我会把相关资源上传
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := hello-jniLOCAL_SRC_FILES := hello-jni.cinclude $(BUILD_SHARED_LIBRARY)
(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中的aastatic { System.loadLibrary("hello-jni");//注意名字是是libhello-jni.so去掉lib和后缀}}
(7)效果
点击按钮:出现一串话
最后把工程上传,我的工程是公司的sdk,所以大家用的时候要换成自己的。lib和jni都是通用的,have fun!
资源下载:http://download.csdn.net/detail/gshengod/7034015
1 0
- android图文介绍NDK安装及简单jni demon的实现
- Android SDK、NDK、JNI的简单介绍
- Android SDK、NDK、JNI的简单介绍
- Android NDK环境搭建及调用JNI的简单步骤
- Android NDK介绍及JNI调用
- Android NDK JNI 的简单使用
- android studio JNI/NDK的简单使用
- Android NDK介绍、安装与配置(图文)
- Android NDK环境搭建及JNI开发java和C的相互调用的基本介绍
- 从ndk的安装到Android的apk增量升级(1)jni的简单应用
- Android JNI/NDK 简单使用
- 简单实现Android NDK编译jni调用动态库开发
- android studio的简单介绍及安装
- 使用Android NDK开发(一):Android NDK介绍(包括JNI的介绍)
- Android NDK探究奥秘二:Jni的基本介绍。
- Android NDK JNI实现案例
- Android NDK JNI 的环境搭建以及简单的代码
- Android Studio运行NDK程序,简单的JNI实例
- 查询同一表内多字段同时重复记录的SQL语句
- 记录的变量没有显示
- Makefile (一)之 简介
- 将博客搬至CSDN
- 基于HTML5的地理位置定位实验
- android图文介绍NDK安装及简单jni demon的实现
- I/O(五)写一个程序做一个文件的拷贝
- QNX、RTLinux、uC/OS-II、Nucleus Plus、VRTX、VxWorks、eCos的相互比较
- 循环向表中加入测试数据
- 多线程原理及实例
- Linux保持SSH连接时间设置
- Centos6.4 安装mysql
- HDU 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- windows下cmd窗口中一些命令使用