NDK,JNI使用

下载NDK

解压后,设置javah路径,用于生成.h头文件

设置环境变量:Path:  C:\Program Files\Java\jdk1.8.0_101\bin; (JDK地址)

Android studio集成javah命令

设置External Tools,添加Javah

使用JNI

注册

static {    System.loadLibrary("JniTest"); //加载so文件}
public static native String get_String();

生成.h文件,在对应.java上右键选择 External Tools->javah

配置可以使用NDK gradle.properties文件添加
android.useDeprecatedNdk=true
设置NDK路径: local.properties文件添加
ndk.dir=C\:\\Users\\Administrator\\ndk

生成so文件 在build.gradle文件defaultConfig 节点添加
ndk{    moduleName = "JniTest" //需要调用的so文件名}
在c里面实现方法
JNIEXPORT jstring JNICALL Java_com_example_administrator_work_MainActivity_get_1String        (JNIEnv *env, jclass obj){    return (*env).NewStringUTF("this is my library");}

添加so文件

直接复制文件到src/main/jniLibs/目录下,没有就创建

在build.gradle添加:

sourceSets {    main {        jniLibs.srcDirs = [‘src/main/jniLibs‘]    }}
时间: 2024-10-06 05:38:00

NDK,JNI使用的相关文章

NDK/JNI学习--环境搭建

基于Windows来开发Android的NDK,JNI需要的环境搭建,所需要的软件如下: Android 开发环境的基本配置(SDk,ADT,Eclipse IDE,JDK) 这些都是基本的环境搭建就不细说了,参考网上文章就OK了. Apache ANT构建系统 主要是用来构建NDK编译系统的,下载地址:apache-ant-1.9.4-bin.zip,下载后解压到C:\apache-ant-1.9.4,然后配置ANT的环境变量即可. 验证安装成功: GUN make 构建系统(常用Cygwin

NDK/JNI学习--导入hello-jni工程

上一篇文章,简单搭建了NDK开发的环境,此文通过导入C:\android-ndk-r9d\samples\hello-jni(NDK自带example)来疏通真个环境. 打开Eclipse IDE,指定NDK的位置 选择的NDK位置仅对当前的Eclipse workspace有效哦.如果更改workspace,需要重新指定NDK的位置 2. 像导入普通Android工程一样导入hello-jni 此时会出现如下图错误,这个错误是Android导入工程大部分都会出现类似的(原因是开发时API Le

Android NDK JNI WARNING: illegal start byte 0x

今天解决了JNI WARNING: illegal start byte 0x81这个问题: 问题出现的现象是通过jni调用加密方法,调用之后返回密文内容,结果就出现这个问题. 在国外查找一段时间之后,出现这个问题的原因在于:使用newStringUTF方法使用的char *数据要求是可见的内容,所以才导致数据不能正常的返回: 所以一般对我们来说,采用NDK进行加密的时候,加密的密文如果是不可见的字符的话,那么就需要对数据进行一次BASE64编码,在返回String. 或者直接使用byte返回到

【android 开 发 】 - Android studio 下 NDK Jni 开发 简单例子

Android 开发了一段时间,一方面 ,感觉不留下点什么.有点对不起自己, 另一方面,好记性不如烂笔头,为了往后可以回头来看看,就当做是笔记,便决定开始写博客.废话不多说 ! 今天想搞一搞 ndk 和jni  ,, 现在开始写一个简单的demo  1. 创建一个新的工程 2. 创建一个新的类 JniText.java  点击Build--Make Project  后     选中工程 点击F4键 sdk location 中 Android ndk location 选择配置ndk 的路径 

【Android】Eclipse自己主动编译NDK/JNI的三种方法

[Android]Eclipse自己主动编译NDK/JNI的三种方法 SkySeraph Sep. 18th  2014 Email:[email protected] 一.Eclipse关联cygwin 1. project->右击选择Properties->选择Builders,在Builders中选择New创建一个Program 2. 參数配置 二.Eclipse关联ndk-build(自建Builder方法)  1. Project->Properties->Builder

NDK/JNI Develop Guide (4) How to use Array

NDK/JNI Develop Guide (4) How to use Array JNI中的数组分为基本类型数组和对象数组,它们的处理方式是不一样的,基本类型数组中的所有元素都是JNI 的基本数据类型,可以直接访问.而对象数组中的所有元素是一个类的实例或其它数组的引用,和字符串操作 一样,不能直接访问Java传递给JNI层的数组,必须选择合适的JNI函数来访问和设置Java层的数组对象.阅 读此文假设你已经了解了JNI与Java数据类型的映射关系.下面以int类型为例说明基本数据类型数组的访

【Android】Eclipse自动编译NDK/JNI的三种方法

[Android]Eclipse自动编译NDK/JNI的三种方法 SkySeraph Sep. 18th  2014 Email:[email protected] 一.Eclipse关联cygwin 1. 工程->右击选择Properties->选择Builders,在Builders中选择New创建一个Program 2. 参数配置 二.Eclipse关联ndk-build(自建Builder方法)  1. Project->Properties->Builders->N

eclipse NDK jni配置

将会出现jni文件夹,即下面Hello_NDk.cpp和Android.mk 此时会出现下面问题,虽然网上有人说可以用下面这种方式解决,没错是可以解决,但是又会出现另一个问题,那就是如果你想在jni目录下建c++工程及class,你会发现找不到相应的 网上找得比较多得办法(感觉不好): 后面又找到另外一种方法: 选中工程,右键->Properties,点击C/C++ General展开,点击 Path and Symbols,在右边Includes下,点击Add,把NDK文件夹下的jni头文件和

【Android高级】NDK/JNI编程技术基础介绍

作为一个Andoird的Java程序猿,会受到Java语言的局限.由于作为一面门向对象的语言不能像C/C++那样轻易调用与硬件有关的操作.因此JNI就搭建了这样一个桥梁,使Java和C/C++语言之间能够互相调用. 作为一个Javaproject师对C/C++的语言不是非常熟悉,但仅仅需熟悉他们之间调用的原理和方法,关于C/C++的编程就交给C语言project师去吧. 在这篇文章中主要介绍NDK/JIN搭建和基本用法. 一. 环境的搭建 二. 主要的使用 步骤: (1)新建Androidpro

Andorid——ubuntu下的 NDK / JNI

之前一直有接触源代码里面的JNI体系,知道个大概,仅仅管调进了哪个C/C++的接口,如今记录学习下. 撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/39645485 概念: NDK - Native Development Kit ,类似SDK性质,能够看作为一个编译工具的集合. 在android开发中经常使用于将C/C++代码打包编译成android 应用程序可以载入使用的模块.像动态静态库 .a ,.so. 来自百科.NDK