文档章节

android jni 使用流程

lgl_lfx
 lgl_lfx
发布于 2016/02/29 16:48
字数 342
阅读 9
收藏 0

android jni 使用流程

一 环境配置
linux,eclipse,sdk,jdk,ndk(windows 编译so文件比较麻烦)

1.下载ndk 配置ndk到环境中
sudo gedit ~/.bashrc
(末尾加入,具体路径自行修改,以下环境适用linux,windows配置环境变量)
NDK=/home/guilin/software/java/android-ndk-r10b
export PATH=$NDK:$PATH
2.(刷新环境,限linux) source ~/.bashrc
3.输入ndk-build 检测ndk环境是否设置成功

二 使用NDK开发jni

1.新建android工程
2.创建需要使用jni的类,方法如
public class JniPrint {
    public native String hello();

    static {
        System.loadLibrary("testJni");
    }
}
3.生成c头文件(命令行进入android工程目录)
javah -classpath bin/classes -d jni  包名.类名

4.刷新工程目录,可以找到jni文件夹
5.新建c文件,include 生成的.h头文件,把头文件的方法拷贝到c文件中进行实现
6.在jni文件夹下新建Android.mk文件(需修改调用名字和源文件名字)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#java 中调用的名字
LOCAL_MODULE    := testJni
#c源文件名字
LOCAL_SRC_FILES := testJni.c
include $(BUILD_SHARED_LIBRARY)

7.命令行进入android工程jni目录
8.使用命令 $NDK/ndk-build
9.若8成功则会在android工程中的libs/armeabi中生成.so包(可改名字),并在android工程中生成了obj目录,这个目录没啥用处可删除。
10.编译完成



© 著作权归作者所有

共有 人打赏支持
lgl_lfx
粉丝 0
博文 6
码字总数 2371
作品 0
厦门
程序员
Android NDK开发简介

最近由于项目的需要,使用到了Android的NDK技术,对项目核心算法跨平台的移植。简答而言,就是使用C对原来的算法进行了改进,并集成到原来的app项目里。 从前的项目一直没有使用NDK进行开发的...

zhiweiofli
2013/03/07
0
0
开发兼容英特尔架构的Android应用(三) 如何设置您的NDK应用

如何设置您的NDK应用 本篇主要介绍NDK应用的开发步骤,调试流程已经如何为英特尔架构设置您的NDK应用。 相关文章 •1. 开发兼容英特尔架构的Android应用(一) 应用架构介绍 •2. 开发兼容英特...

LiSteven
2013/08/07
0
0
Android 网络编程 目录

Android 网络编程 目录 Android 网络编程1 Http协议 to be continued... Android 架构师之路 目录 Android 架构师之路1 UML图之用例图 Android 架构师之路2 UML图之类图 Android 架构师之路3...

香沙小熊
06/21
0
0
Android JNI学习(二)——实战JNI之“hello world”

本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Native相互调用 Android JNI学习(四)——JNI的常用方法...

隔壁老李头
05/09
0
0
深入了解android平台的jni---注册native函数

注册native函数有两种方法:静态注册和动态注册。 1、静态注册方法 根据函数名找到对应的JNI函数:Java层调用函数时,会从对应的JNI中寻找该函数,如果没有就会报错,如果存在则会建立一个关联...

mfcai
2013/10/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java JDK动态代理

本篇随笔是对java动态代理中的JDK代理方式的具体实现。 首先需要定义一个接口,为其定义了两个方法:   public interface UserService { public void add(); public void delete(); } 然后需...

编程SHA
13分钟前
0
0
轻松理解Dubbo分布式服务框架

Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的...

别打我会飞
21分钟前
0
0
TypeScript基础入门之JSX(一)

转发 TypeScript基础入门之JSX(一) 介绍 JSX是一种可嵌入的类似XML的语法。 它旨在转换为有效的JavaScript,尽管该转换的语义是特定于实现的。 JSX在React框架中越来越受欢迎,但此后也看到了...

durban
45分钟前
0
0
JavaScript使用原型判断对象类型

1. constructor属性 在JavaScript创建对象(二)——构造函数模式中,我们说过可以使用对象的constructor属性判断对象的类型:p1.constructor === Person,可能当时就有细心的读者会想,我们...

Bob2100
47分钟前
1
0
10-《深度拆解JVM》JVM是怎么实现invokedynamic的?(下)

一、问题引入 上回讲到,为了让所有的动物都能参加赛马,Java 7 引入了 invokedynamic 机制,允许调用任意类的“赛跑”方法。不过,我们并没有讲解 invokedynamic,而是深入地探讨了它所依赖...

飞鱼说编程
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部