草庐IT

JNI_OnLoad

全部标签

Android jni引用第三方so动态库和.a静态库并且调用(c)方法

最近花了一周时间来入门学习AndroidJNI方面的知识,因为后续的工作很多需要用到cc++库,我需要用jni来包装一下c函数,来提供给上次java调用。总之多学点知识对自己有好处。案例效果:上文我们讲解了androidstudiocmake生成.a文件(静态库)及调用(cc++)静态库.a本文接着上文,这次我们利用JNI来引用第三方动态库so文件,并且让Java调用它的函数。第一步:生成.so动态库文件编写C文件和头文件DynamicLibraryTest.h////CreatedbyAdministratoron2023/9/5/005.//#ifndefANDROIDCMAKE_DYNA

android - no concrypt_openjdk_jni in java.library.path 错误如何解决?

我想签署我的apk,所以我执行了以下命令:java-jarsignapk.jarplatform.x509.pemplatform.pk8app-debug.apk~/Desktop/test.apk但是我得到了以下错误:Exceptioninthread"main"java.lang.UnsatisfiedLinkError:noconscrypt_openjdk_jniinjava.library.pathatjava.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)atjava.lang.Runtime.loadLibrary

android - 调用 CallVoidMethod 时 JNI 崩溃

我正在尝试从Android应用程序中的nativeC代码调用java方法。使用JNI这听起来很简单,但我的代码在最终调用方法本身时总是崩溃。这是我的代码:nativeC代码:JNIEXPORTvoidJNICALLJava_com_path_to_my_package_renderStuff(JNIEnv*env,jobjectjobj){//...jclassclazz=env->FindClass("com/path/to/the/class");jmethodIDshowCar=env->GetMethodID(clazz,"showCar","()V");env->CallVo

android - JNI 警告预期返回类型 'L' 调用 LocationManager.requestLocationUpdates

我正在使用Necessitas(Android中的QT)。基本上,使用AndroidNDK,androidActivity调用QT应用程序(.so)。我正在为GPS开发一些绑定(bind)。我想我到了那里,但是当我调用方法requestLocationUpdates(String,Long,Float,LocationListener)时,我收到了JNI警告(JNI警告预期返回类型“L”)。部分代码如下:midGetSystemService=currEnv->GetMethodID(actClass,"getSystemService","(Ljava/lang/String;)Lj

android - 如何在 JNI 中将 char[] 转换为 jstring?

在jni中,我想使用以下方法将char*转换为jstring:env->NewStringUTF(chm_pcText)它适用于英文文本,但对于中文文本失败,并得到以下消息:JNIWARNING:illegalcontinuationbyte.如何解决? 最佳答案 我只是解决它:两步,首先:将char*转换为jbyteArray,然后调用javaString的constructor生成jstring。strClass=global_env->FindClass("java/lang/String");ctorID=global_en

android - 一旦在编辑器中打开 C 文件,C JNI 代码就会在 Android Eclipse 项目中引入错误

这个问题在这里已经有了答案:Eclipsecompilessuccessfullybutstillgivessemanticerrors(8个答案)关闭6年前。我在Eclipse中设置了一个Android项目,它使用JNI访问C代码,在我打开其中一个C文件之前一切正常。完成后我得到这些错误:我尝试了很多东西,包括这个:SurprisebehaviorofeclipseforCfileswhileusingJNI,Whyso?我的NDK路径也是这样设置的:有人解决这个问题吗?请注意,关闭项目并重新打开会使问题消失,但一旦打开C源文件,问题就会再次出现。另请注意,如果我不打开C文件,该项目

android - Android 中的 FFMpeg jni?

我构建了Bambuser(http://bambuser.com/opensource)提供的FFMPEG可执行文件和库。所以我设法构建了Android可执行文件和库。如何在我的Eclipse项目中链接这些库并从Java调用FFmpeg函数?开源代码包括C头文件。我是Android原生编码的新手,对此我找不到简单的答案。基本:拥有一堆Android兼容库和一些C头文件,我需要做什么才能从java(+AndroidSDK)重用这些库的功能?如有任何帮助,我们将不胜感激。亲切的问候,为什么如何 最佳答案 您必须使用JNI约定编写一些C粘

java - Android 如何处理多个实例数据/身份和 JNI

这是一个良好实践和智能解决方案的问题,我需要一个建议。我有一个应用程序(据我在Stackoverflow和Google搜索中所见):该应用程序处理各种文档,我喜欢它可以同时处理多个文档。(我习惯了Win32,其中每个实例有一个程序段和一个数据段,但在Android/Java中显然不是这种情况。)我看到一个实例从应用存储(平板电脑)启动应用,另一个打开Gmail或带有附加文档文件的电子邮件,第三个实例从ES文件浏览器等文件处理应用打开文件。我喜欢它们都可以在两者之间翻转。用户可能希望一次阅读多个文档。(如果我在Android/Java环境中使用了单词实例错误,请纠正我)该应用程序构建在包

安卓 JNI : GetObjectClass crashes with SIGSEGV (not a valid JNI reference)

我正在尝试创建一个新线程,因此我将VM从我的方法初始化(从Java调用)传递到我的新线程。在线程中,我调用AttachCurrentThread并获取JNIEnv*env。稍后,我尝试使用环境调用GetObjectClass,但它崩溃了。我相信这是因为对象可能未初始化,但我正在尝试调用在包含native方法的类中定义的方法。我一直在尝试遵循http://java.sun.com/docs/books/jni/html/fldmeth.html的第4.2节(开头).非常奇怪的事情:我正在使用运行2.2的HTCDream进行测试并且以下代码不会崩溃,但是使用运行2.2.2的摩托罗拉Droi

android - 使用 C++ (JNI) 从 Java 对象读取整数字段

我正在尝试从C++访问Java类中的“int”字段;其实我也尝试过其他类型。不过我可以调用方法。但不能访问字段。我得到的是随机垃圾值,而不是我期望的值。这是我的Java代码:privateclassMYViewextendsView{publicMYView(Contextcontext){super(context);five=555;}publicintfive;....}C++部分:jobjectview=(jobject)Env->CallObjectMethod(Obj,jfindViewById,3);ClassMYView=Env->GetObjectClass(view