首页 > TAG信息列表 > jniEnv

NDK 系列(5):JNI 从入门到实践,爆肝万字详解!

请点赞关注,你的支持对我意义重大

JNI(一) JNI - NDK-交叉编译

JNI 1.1 JNI介绍 Java Nativie interface Java 本地接口,JNI是Java调用本地语言的一种特性。通过Jni 可以使java与本地语言之间相互调用 如java 与c/c++ 相互调用 1.2 实现步骤 在java中声明Native方法 public native String stringFromJNI(); javac 命令编译1中的jav

2,阿里+头条+腾讯等大厂Android面试题分享

在JNI技术中,用来记录这种一一对应关系的,是一个叫JNINativeMethod的结构,其定义如下: typedef strut{ //Java中native函数的名字,不用携带包的路径,例如“native_init” const char* name; //Java函数的签名信息,用字符串表示,是参数类型和返回值类型的组合。 const char* signature

Android FFmpeg Camera2 推流直播

FFmpeg Camera2 推流直播 自己花了点时间实现了一个使用FFmpeg将Camera2视频数据推送到RTMP服务的简单Demo,在这里分享下,里面用到知识很多都是之前博客中用到的,难度不大。 1、 定义方法 定义了三个JNI方法 public class FFmpegHandler { private FFmpegHandler() { } priv

第40篇-JNIEnv和JavaVM

下面介绍2个与JNI机制相关的类型JNIEnv和JavaVM。 1、JNIEnv JNIEnv一般是是由虚拟机传入,而且与线程相关的变量,也就说线程A不能使用线程B的JNIEnv。而作为一个结构体,它里面定义了JNI系统操作函数。在之前介绍的实例中,可以看到C的Java_TestJNI_set()或Java_TestJNI_get()函数的实现

Android JNI学习(四)——JNI的常用方法的中文API

一、Interface Function Table(接口函数表) 每个函数都可以通过JNIEnv参数访问,JNIEnv类型是指向一个存放所有JNI接口指针的指针,其定义如下: typedef const struct JNINativeInterface *JNIEnv; 虚拟机初始化函数表,如下面代码所示,前三个条目是为了将来和COM兼容而保留的。另外,

JNI RegisterNatives注册原生方法

除了使用传统方法实现JNI外,也可以使用RegisterNatives实现JNI。和传统方法相比,使用RegisterNatives的好处有三点: C++中函数命名自由,不必像javah自动生成的函数声明那样,拘泥特定的命名方式;效率高。传统方式下,Java类call本地函数时,通常是依靠VM去动态寻找.so中的本地函数(因此它们才

线程中使用AttachCurrentThread得到JNIEnv

要在jni代码的线程中调用java代码的方法,必须把当前线程连接到VM中,获取到一个[JNIEnv*]. A JNI interface pointer (JNIEnv*) is passed as an argument for each native function mapped to a Java method, allowing for interaction with the JNI environment within the na

ndk遇到的坑

ndk遇到的坑 目录ndk遇到的坑回调jobject时要注意异步线程无法使用JNIEnv异步线程无法FindClass不写方法返回还能编译通过.c文件无法使用string 回调jobject时要注意 java->c 的时候传过来的jobject在方法调用完后就会没了 extern "C" JNIEXPORT jlong JNICALL Java_com_seekting

Jni中的各个参数的作用

一、jni demo #include <jni.h> #include <string> using namespace std; extern "C" JNIEXPORT jstring JNICALL Java_com_qxc_testnativec_MainActivity_stringFromJNI(JNIEnv* env, jobject) { string str = "Hello from C++"; retu

JNI开发:静态注册和动态注册

1. 静态注册 jni开发中默认注册方式为静态注册,具体如下:   // MainActivity.javapublic class MainActivity extends AppCompatActivity { static { System.loadLibrary("native-lib"); } @Override protected void onCreate(Bundle savedInstanceStat

<jni.h> 全面剖析

<jni.h> 全面剖析 文章链接:JNI 函数(一)版本信息、类操作、异常  文章链接:JNI 函数(二)全局及局部引用 文章链接:JNI 函数(三)对象操作 文章链接:JNI 函数(四)字符串操作 文章链接:JNI 函数(五)数组操作 文章链接:JNI 函数(六)系统级别的操作 文章链接:JNI 函数(七)NIO 操作 文章链接:JNI 函数(八)反射

Android中关于JNI 的学习(一)对于JNIEnv的一些认识

Android中关于JNI 的学习(一)对于JNIEnv的一些认识   Java 通过 JNI 机制调用 c/c++ 写的 native 程序。c/c++ 开发的 native 程序需要遵循一定的 JNI 规范,下面的例子就是一个 JNI 函数声明: 1 JNIEXPORT jstring JNICALL Java_com_clay_example_JNITest_getJNIString 2 (JNIEnv*

JNI学习笔记:JNIEnv、jobject与jclass详解

JNI学习笔记:JNIEnv、jobject与jclass详解     前言 JNIEnv指针 jobject与jclass类型   1 前言   在进行JNI编程开发的时候,使用javah生成Native方法对应的Native函数声明,会发现所有的Native函数的第一个参数永远是JNIEnv指针,而第二个参数永远是jobject或jclass中的一个。JN

NDK简介

一、NDK简介:          C/C++的动态库。Dalvik通过JNI编程方式调用C/C++代码。          NDK编程提高软件性能,加密保护APK文件          ndk-build        NDK编译生成脚本          Java编译时会根据java声明文件生成dex文件,即使没有java代

Android NDK开发之一:NDK与JNI基础

一、导读 在Android OS上开发应用程序,Google提供了两种开发包:SDK和NDK。你可以从Google官方查阅到有许多关于SDK的优秀书籍、文章作为参考,但是Google提供的NDK资源,相对于SDK还是比较少的。本系列文章主要是用于,自己记录自学NDK的经验,并且希望能够帮助到哪些想学习NDK的朋友。

jni.h 头文件分析 3. 其它数据结构

文章目录属性ID、方法ID 结构体本地接口中的字段描述符jni 内存管理中的引用类型本地方法结构体JNIEnv 和 JavaVM 属性ID、方法ID 结构体 //java 属性 ID 结构体 struct _jfieldID; /* opaque structure 不透明,即未在本头文件中具体实现 */ typedef s

Jni 线程JNIEnv,JavaVM,JNI_OnLoad(GetEnv返回NULL?FindClass返回NULL?)

此文章是关于NDK线程的第二篇理论知识笔记。主要有两个点,如下: 1.pthread_create(Too many arguements, expected 1) ?2.线程中如何获取JNIEnv?GetEnv返回NULL?3.FindClass返回NULL ?首先我们在主页MainActivity的代码如下: public class MainActivity extends Activity { static {