android jni入门
来源:互联网 发布:大数据分析 工具 编辑:程序博客网 时间:2024/05/15 14:41
一、开发环境
需要ndk、jdk、adt-bundle(Eclipse集成Android开发环境)等。
二、在Java中创建jni的Java类,如下代码:
package com.xmqq.example.jni;public class JniTest { //native method public native String helloJni(); static{ System.loadLibrary("testJni"); }}其中,helloJni是native的方法,testJni是jni编译成so文件的名称。
三、生成头文件
首先run一下程序,生成.class文件,
然后用Win+R打开命令行,切换到工程目录。执行如下命令:
C:\Documents and Settings\Administrator\workspace\Jni>javah -classpath bin\classes -d jni com.xmqq.example.jni.JniTest
其中,-classpath是.class文件的目录,-d 是要生成头文件的类名。
(之前偷懒把这部分代码都放在activity里面,执行javah的时候,就遇到一个错误:错误: 无法访问android.app.Activity,所以就把jni接口独立出来)
生成头文件为com_xmqq_example_jni_JniTest.h,在工程目录的jni路径下,可要需要刷新工程才能看到。代码如下:
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_xmqq_example_jni_JniTest */#ifndef _Included_com_xmqq_example_jni_JniTest#define _Included_com_xmqq_example_jni_JniTest#ifdef __cplusplusextern "C" {#endif/* * Class: com_xmqq_example_jni_JniTest * Method: helloJni * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_xmqq_example_jni_JniTest_helloJni (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif四、编写C代码
根据头文件,编写c代码,假设c文件名为jni.c:
#include <string.h>#include <jni.h>JNIEXPORT jstring JNICALL Java_com_xmqq_example_jni_JniTest_helloJni (JNIEnv* env, jobject thiz){ return (*env)->NewStringUTF(env, "this is my first blog!");}五,编写mk文件
和c代码同一路径,编写Android.mk文件,代码如下:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE:= testJniLOCAL_SRC_FILES := jni.cinclude $(BUILD_SHARED_LIBRARY)
其中,LOCAL_MODULE是jni库文件的名称,LOCAL_SRC_FILES 是要编译的c文件,多个文件可以用空格隔开。
六、编译C文件
直接使用Eclipse编译,步骤如下:
1、右键点击工程------选择“properties”-----选择"Builders"------选择“new”,此时界面如下图所示:
2、选择“Program”,在Location下面点击Browse file system,选择ndk-build.cmd。在working directory,选择Browse workspace,选择本工程,如下图所示:
3、点击Build Options,勾选如下图所示:
然后选择Specify Resources...,选择jni目录,如下图:
点击finish,完成配置。
七、编译apk
“clean”工程就会在libs/armeapi中生成so库,之后就可以正常运行apk了。源代码在http://download.csdn.net/detail/q2014818/7799129
- Android JNI开发入门
- Android JNI开发入门
- ubuntu android JNI 入门
- Android JNI开发入门
- Android JNI开发入门
- Android JNI入门实例
- Android JNI入门实例
- Android--jni入门实例
- android jni入门
- Android JNI开发入门
- Android JNI开发入门
- Android JNI开发入门
- Android JNI 入门
- android jni入门基础
- Android JNI 开发入门
- Android之jni入门
- Android JNI入门
- android jni 开发入门
- 的是根深蒂固的风格的风格
- WebService优点和缺点小结
- hdu 2509 Be the Winner(博弈)
- c++ int *p = new int()
- IOS7新特性-右滑返回上级页面
- android jni入门
- 二叉查找树的查找,插入,最大/最小值查找,前驱/后续查找,删除算法[java]
- iphone开发自定义UIControl对象的视图 UISwitch的字体和颜色
- 电梯
- LeetCode-Palindrome Number
- 单片机程序架构(一)时间片轮询
- struts的优缺点
- HDU 4776 Ants tire+优先队列
- POJ 1149 PIGS(最大流+建图)