jni

  • Android NDK 开发入门环境配置与小例子
    Android NDK 开发入门环境配置与小例子

    NDK:Native Development Kit原生开发工具 NDK能干什么:NDK使得在android中,java可以调用C函数库. 为什么要用NDK:我们都知道,java是半解释型语言,很容易被反汇编后拿到源代码文件,在开发一些重要协议时,我们为了安全起见,使用C语言来编写这些重要的部分,来增大系统的安全性.还有,在一些接近硬件环境下,相信大家都清楚C与java的优劣.顺带提一下:NDK并不能显著提升应用效率.why?我们都觉得C语言比起java来说效率要高出很多,一方面,随着jdk的不

    android, ndk, jni, 配建环境, 免cygwinApril 19

  • Android Studio-Gradle项目中添加JNI生成文件(.so文件)

    原文地址: http://www.tuicool.com/articles/yuAjAz 很简单, 就是在配置的android节点下加入下面的内容就ok: sourceSets { main { jniLibs.srcDirs = ['libs'] } } 备注:Android Studio 1.1.0测试通过,建议使用最新版AndroidStudio.

    android, jni, Studio, so文件April 10

  • JNI/NDK开发指南(八)--调用构造方法和父类实例方法
    JNI/NDK开发指南(八)--调用构造方法和父类实例方法

    转载请注明出处:http://blog.csdn.net/xyang81/article/details/44002089 在第6章我们学习到了在Native层如何调用Java静态方法和实例方法,其中调用实例方法的示例代码中也提到了调用构造函数来实始化一个对象,但没有详细介绍,一带而过了.还没有阅读过的同学请移步<JNI/NDK开发指南(六)--C/C++访问Java实例方法和静态方法>阅读.这章详细来介绍下初始一个对象的两种方式,以及如何调用子类对象重写的父类实例方法. 我们先回过一下,在J

    jni, 调用构造方法, 调用父类实例方法March 11

  • Android Studio 用 JNI 实现与原生代码通信

    开发步骤 1.创建 HelloJNI 类 package com.zaoqibu.hellojni;public class HelloJNI { public native String stringFromJNI(); static { System.loadLibrary("hello-jni"); } } 原生方法的声明 public native String stringFromJNI(); 静态加载共享库,System.loadLibrary("hello-jn

    android, ndk, jni, StudioFebruary 27

  • JAVA之JNI从头完整实例
    JAVA之JNI从头完整实例

    Java调用dll 实例下载地址:http://pan.baidu.com/s/1ntE8lwl 准备阶段: 1).Java 环境 JDK(其实这个没啥说的....) 2).MyEclipse或者Eclipse(这个自己选择) 3).C语言IDE Microsoft Visual C++6.0(这个也可以自己选择) 以下步骤中的使用的工具都是以我个人所使用的为例 第一步:打开Eclipse建如图项目: 生成Java与C之间的通信约定接口 代码如下: /** * 主要就是生成Java与C/C++之

    jni, JavaDecember 30

  • JNI/NDK开发指南(四)--字符串处理
    JNI/NDK开发指南(四)--字符串处理

    转载请注明出处:http://blog.csdn.net/xyang81/article/details/42066665 从第三章中可以看出JNI中的基本类型和Java中的基本类型都是一一对应的,接下来先看一下JNI的基本类型定义: typedef unsigned char jboolean; typedef unsigned short jchar; typedef short jshort; typedef float jfloat; typedef double jdouble; ty

    jni, 字符串December 25

  • Android Ant+NDK构建自动生成C/C++头文件

    参考大神博客: http://www.boyunjian.com/do/article/snapshot.do?uid=7571259727878832318 http://whithin.blog.51cto.com/690417/1174645 对于ANT生成头文件,可以使用 javah命令 具体命令是在项目的bin/classes目录下执行: javah -d ../../jni -jni com.ndk.test.YourClass 或者在src目录下 如下 javah -d ../jn

    ndk, jni, javah, ANT, AntBuildDecember 22

  • Android快速上手指南(WIP)

    JNI是java调用C/C++的一种封装技术,由JVM负责处理真实的JNI call. Java官方的文档 http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html Android平台的 http://developer.android.com/training/articles/perf-jni.html 快速上手的代码范例: https://android.googlesource.com/pl

    android, jni, JavaDecember 22

  • JNI/NDK开发指南(三)--JNI数据类型及与Java数据类型的映射关系
    JNI/NDK开发指南(三)--JNI数据类型及与Java数据类型的映射关系

    转载请注明出处:http://blog.csdn.net/xyang81/article/details/42047899 当我们在调用一个Java native方法的时候,方法中的参数是如何传递给C/C++本地函数中的呢?Java方法中的参数与C/C++函数中的参数,它们之间是怎么转换的呢?我猜你应该也有相关的疑虑吧,咱们先来看一个例子,还是以HelloWorld为例: HelloWorld.java: package com.study.jnilearn; class MyClass {}

    jstring, jni, jobject, jint, JNI数据类型December 20

  • JNI/NDK开发指南(开山篇)

    转载请注明出处:http://blog.csdn.net/xyang81/article/details/41759643 相信很多做过Java或Android开发的朋友经常会接触到JNI方面的技术,由其做过Android的朋友,为了应用的安全性,会将一些复杂的逻辑和算法通过本地代码(C或C++)来实现,然后打包成so动态库文件,并提供Java接口供应用层调用,这么做的目的主要就是为了提供应用的安全性,防止被反编译后被不法分子分析应用的逻辑.当然打包成so也不能说完全安全了,只是相对反编译Jav

    ndk, jniDecember 18

  • javah生成C++头文件(.h)

    在eclipse中建一项目,建一class,即TestHello.java文件 1 package esmart.colfile.parse 3 public class TestHello { 4 static { 5 System.loadLibrary( " TestHello " ); 6 } 8 public static native void hello(String msg); 10 public static void main(String[] args) { 12

    classpath, jni, javahSeptember 19

  • 如何为Android,Mac和Windows平台创建Java JNI动态链接库
    如何为Android,Mac和Windows平台创建Java JNI动态链接库

    Java Native Interface (JNI) 是Java和C/C++之间的桥梁.在一些情况下,为了提高Java程序的性能,扩展Java程序的功能,我们需要使用JNI.比如数据库的调用,当我们下载一个JDBC的jar包之后,解压可以看到里面包含了不同平台的动态链接库: 这篇文章介绍如何为Android,Mac和Windows平台,创建一个最简单的JNI动态链接库. 参考文章: Getting Started with JNI on Android, Windows and Mac And

    android, jni, Java, Windows, MACSeptember 17

  • android使用c通过jni回调java

    很多场合都有这样的需求,由于以前都是java调用c的接口,没有做过回调,今天花了大半天时间把这个流程跑通了,记录一下,以备后用.这里发句牢骚,那些网上分享出来的代码,请问你们确实是能正常工作吗?还有查来查去都是那几份,大家转载精神可嘉啊 jni相关头文件代码 /* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class com_example_ndktest_CallbackTest */ #

    android, jniSeptember 13

  • [jni 编程]-- NDK环境搭建

    在<站在巨人的肩膀上,谈app的创新性>一文中 http://my.codeweblog.com/liusicong/blog/311971,我提到过构建app技术壁垒的必要性.在构建技术壁垒时,我们往往需要调用许多库函数,例如:图像处理的库函数,音频处理的库函数.我们发现一个有效可行的方案就是使用NDK工具来交叉调用C++函数. 我习惯于把我搜到的数篇帖子中特别好的帖子的地址附在问题后,这也是一种资源整合,面向想要入门学习android的java和c++交叉调用技能的读者盆友. 本文将分两部

    ndk, jni, BuilderSeptember 10

  • Android JNI开发提高篇

    有关JNI的开发技术,我们继续围绕Android平台进行,JNI可以支持C或C++,从目前为止我们写过的JNI代码均为C实现的,即文件名为.C而C++的和这些有什么不同呢? Android平台上的JNI一般使用C还是C++编写呢? Android平台在中间层和大部分的类库的底层使用了C++的开发方式,后缀为.cpp,比如Android Framework.OpenCore.Webkit.SQLite等等.使用C++好处就是可以使用很多库但目前Android不支持STL,我们知道C表示字符串都是字

    android, jni, Java, String, nullJuly 9

  • JNI技术
    JNI技术

    先将所有的JNI的本地方法封装成一个类 public class JniRes { static { System.loadLibrary("JNI");//加载C动态库 } //JAVA中只是声明本地方法,实现在C.C++中实现 public native void display(String str); public native int add(int a, int b); public native void changeObj(JavaObj myByte); } Java

    jni, Java, 动态库, NativeJune 1

  • Mac OS X中的JNI调用和实现

    网上给出的在Windows和Linux操作系统下的JNI编程教程很多,其实无论在哪个系统中都是相似的步骤.总结如下: 编写Java程序文件,要使用调用本地库的类需在static初始化块内使用System.loadLibrary("库名")方法加载. 编译该Java类获得.class文件,并且使用javah -jni 类名获取"类名.h"头文件. 包含该头文件并实现头文件中声明的方法. 编译并生成本地库文件. 将该库文件放置于java.library.path路径(可

    jni, Java, MACApril 14

  • OpenCV4Android&JNI学习中遇到的问题及一些小结

    想在Android手机上实现人脸检测,于是搭建一个OpenCV4Android的环境.具体参考如下网址:http://my.eoe.cn/sandking/archive/2999.html ,http://www.360doc.com/content/13/1103/10/14479769_326248493.shtml 第二个网址中主要参考cygwin需要下载的软件. 在搭建好环境后,发现OpenCV4Android自带face detection例子,运行了一下发现....竟然检测不到人脸

    jni, OpenCV4AndroidApril 9

  • NDK开发,没有你想象的那么难
    NDK开发,没有你想象的那么难

    NDK:Native Development Kit原生开发工具 NDK能干什么:NDK使得在android中,java可以调用C函数库. 为什么要用NDK:我们都知道,java是半解释型语言,很容易被反汇编后拿到源代码文件,在开发一些重要协议时,我们为了安全起见,使用C语言来编写这些重要的部分,来增大系统的安全性.还有,在一些接近硬件环境下,相信大家都清楚C与java的优劣.顺带提一下:NDK并不能显著提升应用效率.why?我们都觉得C语言比起java来说效率要高出很多,一方面,随着jdk的不

    android, ndk, jni, Android开发March 30

  • JNI字段描述符

    "([Ljava/lang/String;)V" 它是一种对函数返回值和参数的编码.这种编码叫做JNI字段描述符(JavaNative Interface FieldDescriptors).一个数组int[],就需要表示为这样"[I".如果多个数组double[][][]就需要表示为这样 "[[[D".也就是说每一个方括号开始,就表示一个数组维数.多个方框后面,就是数组 的类型. 如果以一个L开头的描述符,就是类描述符,它后紧跟着类的字符串,然

    jniFebruary 21

  • Android NDK带来什么

    文章转载于:http://blog.csdn.net/hhao137/article/details/4304664 1.前言 6月26日,Google Android发布了NDK,引起了很多发人员的兴趣.NDK全称:Native Development Kit.下载地址为:http://developer.android.com/sdk/ndk/1.5_r1/index.html. 2.误解 新出生的事物,除了惊喜外,也会给我们带来一定的迷惑.误解. 2.1.误解一:NDK发布之前,Andro

    android, ndk, jni, 学习February 16

  • Android.mk文档规范

    Android.mk文档规范 Android.mk 编译文件是用来向 Android NDK描述你的 C,C++源代码文件的, 这篇文档描 述了它的语法.在阅读下面的内容之前,假定你已经阅读了 docs/OVERVIEW.TXT 文件,了解 了它们的脚色和用途. 一.概述 一个 Android.mk file 用来向编译系统描述你的源代码.具体来说: (1) 该文件是GNU Makefile的一小部分, 会被编译系统解析一次或更多次的build系统. 因此,您应尽量减少您声明的变量,不要认为某些

    android, ndk, jni, Java, Android.mkDecember 31

  • cocos2d-x中通过Jni实现Java与C++的互相调用

    cocos2d-x中通过Jni实现Java与C++的互相调用. cocos2d-x用开发者提供了一个类JniHelper,提供了java与c++之间互调的jni解决方案. 笔者所开发的"史上最坑爹的游戏"项目中使用到了JNI,为此专门定义了一个类JniUtil. 头文件JniUtil.h中需要引入如下两个.h文件: #include <jni.h> #include "platform/android/jni/JniHelper.h" 通过C++调用Ja

    jni, java调用c, cocos2dx, java与C++互调, cocos2d-x的JniDecember 23

  • 在C++中如何将jni传过来的jstring转为char*

    在C++中如何将jni传过来的jstring转为char*,折腾了半天,这个必需要分享!!! char* JniUtil::jstringToChar(JNIEnv *env, jstring jstr) { char * rtn = NULL; jclass clsstring = env->FindClass("java/lang/String"); jstring strencode = env->NewStringUTF("UTF-8"); jm

    jni, 转换, char, jstirngDecember 23

  • Android 增量更新实例(Smart App Updates)

    目录[-] 官方说明 实现原理 实现 (1)生成差异包 (2)使用旧apk+差异包,在客户端合成新apk 注意事项 demo 自从 Android 4.1 开始,Google引入了应用程序的增量更新. 官方说明 Smart app updates is a new feature of Google Play that introduces a better way of delivering app updates to devices. When developers publish an

    android, ndk, jni, Java, 增量更新December 23

  • Win64下通过JNI(C++)创建jvm
    Win64下通过JNI(C++)创建jvm

    在Win64下通过jni启动jvm并运行java类: 环境设置: jdk: jdk7_45(x64) vs2010 64位命令行工具, 用来编译我们写的C++,就是这个: 环境变量设置: LIB变量添加"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64", 编译时能找到64位库; LIB变量中添加%JAVA_HOME%\lib,主要是在编译时能找到jvm.lib库文件; PATH变量中添加%JAVA_HOME%\jr

    jvm, jni, win64, Java, 本地程序创建jvmDecember 9

  • 简单记录jni开发流程
    简单记录jni开发流程

    编写java类: package org.haol.jni.sample; public class HelloJni { public native void hello(String str); static { System.loadLibrary("JNITest"); } public static void main(String[] args) { new HelloJni().hello("JNI"); } } 通过class文件生成c++头文件:如

    jni, JavaDecember 9

  • OpenCV4Android+JNI开发快速上手入门

    最近尝试了一下在Android上试验简单的一些OpenCV算法,发现OpenCV4Android SDK非常好用,提供大部分常用的OpenCV功能的Java API.当然如果直接对图像像素进行操作的话Java会比较没有效率,这时可以对部分关键功能使用ndk和jni进行native的C++实现.有了这套SDK和简单的JNI接口,像我这样不懂安卓开发的人也可以在手机上尝试各种好玩的算法了. 这个入门假定你已经比较熟悉OpenCV的使用,所以主要针对安卓工程的创建和配置. (本文为cvnote.inf

    android, jni, opencvDecember 2

  • Android NDK开发起步Hello Jni
    Android NDK开发起步Hello Jni

    /* http://my.codeweblog.com/lifj/blog/177087 */ 上一篇讲了怎么配置NDK的开发环境.这次记录一下写一个Hello Jni的最简单的Android程序. 一.新建Android程序工程. 这里,我们需要做一下几步: 1.Layout中添加TextView的id. 2.MainActivity中声明native方法. 3.MainActivity中调用native方法. 我们这里先不loadLibrary.先load总感觉我的库还没有呢,先load做什

    android, ndk, jniNovember 17

  • Android NDK开发环境搭建
    Android NDK开发环境搭建

    /* http://my.codeweblog.com/lifj/blog/176916 */ 有人说,网上的环境配置一大堆,你还写做什么?一来,是我再次复习的材料.二来,网上有些地方说的不是很详细,我也是参考了好多资料,弄了半天才弄好环境.写下来,帮助后面的人省掉不必要的麻烦.下面进入正题. 作为一个2年的android攻城狮,今天才开始学习NDK的开发,太晚了..毕竟是现用现学.学完还是写个博客记下来比较好,省的以后再忘记,又得重新来过.下面正式进入正题(难道上面都是说着玩玩的?). 能看到

    android, ndk, jni, 环境November 16

  • 写一篇大家一看就会的教程(转)

    JNI初步.让大家一看就会哈哈. 写篇教程吧,网上很多关于JNI的hello world,虽然称作哈喽沃德,但是调试起来还是不可避免遇到很多问题.今天在调式成功的这个里程碑时间里,总结下这两天俺的经验,那些希望使用JNI的银们,如果看到这篇小文了,或许可以一站式解决问题,免去东奔西走的麻烦咧~~~~哈哈哈 开始! JNI是啥就不介绍了,最直观的作用就是它可以在java里面调用dll.如果大家伙儿遇到c++写的代码想转向java使用,不妨生成一个dll,再按下面的步骤来. 1. 编写java代码.

    jniSeptember 26

  • android jni编写C/C++ 文件加载的库文件路径所在位置
    android jni编写C/C++ 文件加载的库文件路径所在位置

    在编写jni 的xxx.c文件中,和在linux中编写C文件一样,都需要include<???????>一堆的库文件 那么这些库文件都是从哪来的呢?当然是有位置的 这个还和你上层编写选择的android版本有关系哦 位置:android/prebuilt/ndk/android-ndk-r????/platforms/android-????/arch-arm/usr/include/文件夹下 比如我要找ioctl.h文件,那么它所在的路径为(图):

    jni, 文件, 加载, 路径, 库文件September 22

  • jni进阶测试

    环境:win7 64, vs2008,eclipse3.7, jdk1.6 java代码如下: package cyper.jni; public class Test { public native int sumArray(int[] arr); public native String getString(); public native String[] getStringArray(); public static native int[][] initInt2DArray(int s

    jniSeptember 20

  • jni string转换测试

    成功一: #include "cyper_jni_Test.h" #include <windows.h> /* * Class: cyper_jni_Test * Method: getString * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_cyper_jni_Test_getString (JNIEnv * env, jobject obj){ const wchar_t* s

    jni, StringSeptember 20

  • java jni调用windows的MessageBox
    java jni调用windows的MessageBox

    Java代码如下: package cyper.jni; public class WindowHelper { public native void showMsgBox(String str); public static void main(String[] args) { WindowHelper w = new WindowHelper(); w.showMsgBox("Hello,世界!"); } static { System.loadLibrary("Wind

    jni, messageboxSeptember 19

  • Java基础知识--JNI入门介绍

    Java类型和本地类型对应 在如下情况下,需 要在本地方法中应用java对象的引用,就会用到类型之间的转换: 1)java方法里面将参数传入本地方法: 2)在本地方法里面创建java对象: 3)在本地方法里面return结果给java程序. 分为如下两种情况: Java原始类型 像 booleans.integers.floats等从Java程序中传到本地方法中的原始类型可以直接使用,下面是java中的原始类型和本地方法中的 类型的对应: Java类型 本地类型 字节(bit) boolean

    jniSeptember 19

  • 图文教程vs2008+eclipse开始jni教程实例(一)
    图文教程vs2008+eclipse开始jni教程实例(一)

    原创文章,欢迎转载,转载请说明 1.在eclipse中新建一个testJni的工程,新建一个package com.easou.abo.jnitest 2.在com.easou.abo.jnitest下新建一个类Demo,代码如下 package com.easou.abo.jnitest; public class Demo { public native void sayHello(); public static void main(String[] args) { System.load

    jni, vs2008September 19

  • Android App 增量更新实例(Smart App Updates)

    Android应用增量更新库(Smart App Updates) 介绍 你所看到的,是一个用于Android应用程序增量更新的开源库. 包括客户端.服务端两部分代码. 原理 自从 Android 4.1 开始,Google引入了应用程序的增量更新. Link: http://developer.android.com/about/versions/jelly-bean.html Smart app updates is a new feature of Google Play that int

    android, ndk, jni, Java, 增量更新September 10

  • android下的jni

    1.首先创建一个工程,jnitest里面的类叫jnitest.java public class jnitest extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // System.out.println("hello

    android, ndk, jni, 安卓August 17

  • 每周总结20130814--Android NDK环境的搭建和使用,YUV420SP格式图像的处理
    每周总结20130814--Android NDK环境的搭建和使用,YUV420SP格式图像的处理

    Windows下搭建Android NDK开发环境 更新:比较新的版本的Android NDK都自带基本的GNU工具链,所以不用安装庞大的cygwin或者MSYS了,直接解压NDK然后在Eclipse里配置编译器就可以了. ------------------------------------ Android NDK需要使用Linux下的make.gdb等开发工具,因此要安装一个模拟的Linux环境.这里选择最常用的cygwin.MSYS应该也可以,不过没有亲自试过,留给有求证精神并鄙视cyg

    android, ndk, jni, yuvAugust 14

  • JNI初探

    Jni初探 由于公司最近在培训JNI,于是结合公司的培训和自己在网上自学的一些东西做一下这方 面的整理,方便为其他初学者提供一个能快速入门的途径.好了,废话不多说,本文主要介绍 一下JNI以及在实际使用过程中用到的一些东西,包括在如何调用C++的代码(因为公司是用 C++的),以及怎么在C/C++中回调java方法,还有向库中动态注册函数.那些想看NDK环境搭 建的随便百度一下一堆blog,这里就不说了哈. 一.Jni理解 Java Native Interface (JNI)标准是java平台

    ndk, jni, C回调JAVAJuly 12

  • JNI编程学习1

    本文介绍构建最简单的JNI程序,以下步骤在Linux环境测试通过 1.创建Test.java文件 public class Test{ static { System.loadLibrary("Test"); } public static native void PrintSum(int a, int b); static public void main(String[] args){ Test.PrintSum(1, 3); } } PrintSum函数是一个JNI调用函数,设计

    jniJuly 4

  • JNI native方法以及回调方法的实现

    JNI注册Native方法的步骤: 1. Java层有五个Native方法: DsmccDownloader类下面有五个native方法 public native voidloadcancel(int handle); private native boolean init(); private native void setCurrentFrequency(int freq); private native int loadDir(XXXXXX); private native int lo

    android, jni, 注册, NativeJune 21

  • Android JNI 在几种IDE上的编译方法
    Android JNI 在几种IDE上的编译方法

    首先需要安装cygwin,不用勾选太多的内容. 在select packages里面搜索autoconf2.1.automake1.10.binutils.gcc-core.gcc-g++.gcc4-core.gcc4-g++.gdb.pcre.libpcre-devel.gawk.make. 然后一路next安装完成即可. Virtual Studio: 工具-外部工具-添加 标题:Build Jni 命令:E:\cygwin\bin\bash.exe 参数:--login -c "echo

    eclipse, android, jni, AndroidstudioJune 15

  • JNI简单实现
    JNI简单实现

    事情的起因是一部的一个项目需要用到一个爱国者提供的基于U盘的加密技术.对方提供了U盘和一个dll动态链接库hiddenIO.dll.在U盘的隐藏区域内可以储存USB-Key信息,通过这个dll里的两个方法可以使用c/c++编写程序在U盘的隐藏区域读写信息,对方提供了示例代码.由于一部的项目是基于SWT/RCP技术的,所以需要在java程序中调用这两个方法. 目前java与dll交互的技术主要有3种:jni,jawin和jacob.Jni(Java Native Interface)是sun提供的

    jniJune 6

  • android 的NDK在Windwos环境搭建(二)
    android 的NDK在Windwos环境搭建(二)

    android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录 内容目录: 1.默认基础环境 2.NDK下载与配置 3.安装Cygwin 4.用NDK编译 5.安装CDT插件 6.安装Sequoyah插件 7.JNI编译环境配置 画了一个思维导图让大家一目了然配置过程 ----------------------------------------------- 一.默认基础环境为已经完成Android开发环境的搭建 本人的环境是 jdk1.

    android, ndk, jni, windwos, 环境搭建March 25

  • 在 JNI 编程中避免内存泄漏
    在 JNI 编程中避免内存泄漏

    JNI 编程简介 JNI,Java Native Interface,是 native code 的编程接口.JNI 使 Java 代码程序可以与 native code 交互--在 Java 程序中调用 native code:在 native code 中嵌入 Java 虚拟机调用 Java 的代码. JNI 编程在软件开发中运用广泛,其优势可以归结为以下几点: 利用 native code 的平台相关性,在平台相关的编程中彰显优势. 对 native code 的代码重用. native

    jni, Java, 内存泄漏March 21

  • Android NDK开发之Jni调用Java对象
    Android NDK开发之Jni调用Java对象

    本地代码中使用Java对象 通过使用合适的JNI函数,你可以创建Java对象,get.set 静态(static)和 实例(instance)的域,调用静态(static)和实例(instance)函数.JNI通过ID识别域和方法,一个域或方法的ID是任何处理域和方法的函数的必须参数. 下表列出了用以得到静态(static)和实例(instance)的域与方法的JNI函数.每个函数接受(作为参数)域或方法的类,它们的名称,符号和它们对应返回的jfieldID或jmethodID. 函数 描述 G

    android, ndk, jniMarch 15

  • Android NDK开发之数组类型的操作

    Jni 可以通过JNIEnv提供的方法,对传过来的Java数组进行相应的操作.它提供了两种函数:一种是操作Java的简单型数组的,另一种是操作对象类型数组的. 操作Java的简单型数组 因为速度的原因,简单类型的Java数组,会作为指向本地类型的指针暴露给本地代码调用.因此,它们能作为常规的数组存取.这个指针是指向实际的Java数组或者Java数组的拷贝的指针.另外,数组的布置保证匹配本地类型. 在C/C++中,jintArray 不能用下标对其进行直接存取,必须用到JNI中提供的接口函数进行操

    android, ndk, jniMarch 15

  • Android NDK开发之Jni的数据类型
    Android NDK开发之Jni的数据类型

    在前面的一篇博客<Android NDK开发简介>,我简单地说明了Android NDK开发的流程,以及其重要的一环:JNI层得开发.今天我再详细说明一下自己的学习经验. JNI是Java代码和C/C++代码通信的桥梁,其角色在某种意义上就是一个翻译员,从设计模式来看叫适配器. 两者的沟通,首要的一定要对嘴型,对channel,沟通才能到位.计算机程序的基本组成,从狭义来讲,就是数据结构+算法.由于Java和C/C++是两种不同的编程语言,它们各自拥有自家定义的数据类型和结构.JNI的第一步就

    android, ndk, jniMarch 15