草庐IT

JNI_CreateJavaVM

全部标签

c - JNI/C 库 : passing byte ptr

我的C库中有一个unsignedchar*,我正在调用一个JNI导出的函数,该函数需要使用此数据设置一个java对象,最好是在byte[]中。但是这个函数会被调用的很频繁,而且要拷贝的数据也挺多的。是否可以使用ByteBuffer并将该ByteBuffer的指针分配给我的unsignedchar*?还是反过来才有效?我什至可以在不复制数据的情况下执行此操作吗?访问它的最佳方式是什么?unsignedchar*中数据的大小是已知的。 最佳答案 考虑到您提供的少量信息,这是一个可能的解决方案。在Java方面,您将:packagecom.

android - 什么是 jni/libs 文件夹?

我注意到,当在Eclipse中向项目添加native支持时,它会生成一个jni/libs/文件夹。这个文件夹是什么以及它是如何使用的,因为我在NDK文档中找不到它。来自NDK文档,acopyofyourprebuiltsharedlibrarywillbecopiedinto$PROJECT/obj/local,andanotherwillbecopiedandstrippedinto$PROJECT/libs/(abi).我注意到,当执行ndk-build时,这个目录被清除,一些库被放入其中。然而,通常情况下$Project/jni/libs中的库与$Project/libs不匹配。

java - JNI GetMethodID 在 native 线程中导致错误

在android中,我使用pthread_create创建一个本地线程,然后在回调过程中,调用FindClass来获取一个Java类。但它不起作用。我从androidjnitips得到提示我在FindClassfromanythreadinAndroidJNI中找到了解决方案我像这样为我的项目修改它[编辑]JavaVM*gJvm=nullptr;staticjobjectgClassLoader;staticjmethodIDgFindClassMethod;JNIEXPORTjintJNICALLJNI_OnLoad(JavaVM*pjvm,void*reserved){gJvm=p

java - JNI : Bitmap from unsigned char* always null

我想将图像(通过jni)从C++传递到android应用程序。我从一个unsignedchar*数组开始。这个数组没有任何损坏;我什至可以将它保存到ppm文件中,并在我的笔记本电脑上正确显示。然后,我使用此函数将其转换为jByteArray:jbyteArrayimgByte=as_byte_array(env,imgRaw,img.getRawImageSize());...jbyteArrayas_byte_array(JNIEnv*env,unsignedchar*buf,intlen){jbyteArrayarray=env->NewByteArray(len);env->Se

android - 导入现有的 Android 项目导致 JNI 文件夹中有很多 "bugs"

我有一个带有native库的eclipse项目,我需要将这个项目复制到另一台机器上。我在那里处理这个项目文件夹并使用“文件->新建->来自现有代码的Android项目”。我还使用勾选“将项目复制到工作区”。然后我转到jni文件夹,看到很多错误,例如“Unresolvedinclusion:”、“类型‘JNICALL’无法解析”、“方法‘GetStringUTFChars’无法解析”等。总共有31个错误.我正在尝试编译这个jni库。没问题。它已经编译,但我仍然看到我之前看到的所有错误。我尝试启动android应用程序,它告诉我我的项目包含错误。这个问题只存在于原生库中。如何解决这个问题?

android - 如何在设备中检索支持的 android JNI 版本?

我需要知道Android设备是否支持JNI以及哪个版本。我可以使用哪个函数调用来执行此操作?我还应该从Java端还是NDK端调用它? 最佳答案 您可以在任何设备上的任何Android应用中使用JNI。JNI提供了一个GetVersion调用。您还可以将最低版本指定为JNI_OnLoad的返回值或作为AttachCurrentThread的参数。旧版本的Android支持1.4。较新的版本支持1.6。与往常一样,最好从JNITips开始页面。 关于android-如何在设备中检索支持的an

android - 通过在 qt 中从 C++ JNI 发送字符串在 Android 中显示 Toast

我正在尝试在C++端的Java方法调用上显示toast我已经设法调用了那个方法,甚至得到了字符串,但是Toast不工作我已经尝试了几乎所有的上下文和所有C++方面JavaVMAttachArgsargs={JNI_VERSION_1_6,NULL,NULL};vm->AttachCurrentThread(&env,&args);activityConstructor=env->GetMethodID(activity,"","()V");jobjectobject=env->NewObject(activity,activityConstructor);toastID=env->Ge

android - JNI 从 C++ 调用 Java 方法

我在使用JNI时遇到问题,从C++调用方法到Java。我正在尝试调用一个采用bool值的void方法。我的java代码如下:publicvoidsetStatus(booleanbool){//Dostuff...}publicnativevoidinitialize(intdefaultPort);在我的C++代码中,我正在创建一个结构来保存环境和对象并将其传递给线程:JNIEXPORTvoidJNICALLJava_com_device_client_HostConnection_initialize(JNIEnv*env,jobjectobj,jintport){structja

Android学习--JNI

文章目录JNI(JavaNativeInterface)NDK(NativeDevelopmentKit)一、创建一个JNI项目1.创建项目2.C++文件字段说明1.Extern“C”2.JNIEXPORTh和JNICALL3.JNI接口命名规则4.JNIEnv5.jclass和jobject6.数据类型7.JNI函数签名信息二、JNI实现1.简单实现2.静态注册3.动态注册三、案例:利用JNI存储SDK相关的密钥信息1.静态注册方案2.动态注册方案四、原理解析1.动态注册原理解析2.静态注册原理解析3.Java调用Native的流程总结JNI(JavaNativeInterface)提供一种

android - 使用 JNI(更具体地说是 Android NDK)时,Java 是否通过引用或值传递给 C

当使用JNI(更具体地说是AndroidNDK)时,Java是否通过引用或值传递给C 最佳答案 这取决于类型。原始类型按值传递,引用类型按...引用传递。参见http://java.sun.com/docs/books/jni/html/types.html 关于android-使用JNI(更具体地说是AndroidNDK)时,Java是否通过引用或值传递给C,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.