草庐IT

jni_generator

全部标签

android - C JNI 库使整个 Android 应用程序崩溃

我正在使用为android编译的ffmpeg并且目前可以正常工作,但是有时会出现错误(基于某些android手机配置)并且应用程序只是强制关闭并显示以下消息:Fatalsignal11(SIGSEGV)at0x00000001(code=1),thread20745(AsyncTask#2)ffmpeg调用在try/catch中;然而,它似乎并不关心。那么,我该如何防止这种强制关闭并向用户显示消息呢? 最佳答案 I'mafraidIcan'tdothat.另请参阅此答案hintsatwhy.当ffmpeg死亡时,它会带走您的整个程序

java - 将 JNI 对象作为引用指针访问到 Java 层

我正在编写一个应用程序,其中我与JNI调用有很多关系,每次我都必须执行getter()调用来访问变量值。相反,是否可以访问Java层上的JNI对象的Objectreference,这样就可以仅通过变量名(如obj.name)获取更新的变量值而不是obj.getName())。我已经检查过this和this,但不知道如何在java层将地址隐藏到对象。编辑我想在JNI的Java层以这种方式访问​​Obj。privatenativeCustomObjgetCPPCustomObjectPointer();这里有任何建议。 最佳答案 Isi

android - Android JNI 中的 C++11 随机库

我正在尝试使用使用C++random库的native组件编译Android应用。我的Application.mk文件是:APP_STL:=stlport_staticAPP_CPPFLAGS+=-std=gnu++11NDK_TOOLCHAIN_VERSION:=4.8编译时出现错误:[armeabi]Compile++thumb:Projectrandom库是否可用于Android? 最佳答案 APP_STL:=stlport_staticAPP_CPPFLAGS+=-std=gnu++11NDK_TOOLCHAIN_VERSIO

android - 在 native 代码中捕获信号 (SIGSEGV) 后从 JNI 回调到 Java Android 应用程序代码

我有一个最小的Android应用程序,它是使用启用了C++支持的新项目向导创建的。该应用程序的目的是允许c++在捕获信号(SIGSEGV)后回调到java。程序的顺序简短而甜美,伪代码如下:进入native方法handleSegv()native代码作为测试回调到javanative代码设置SIGSEGV处理程序进入native方法sendSegv()native代码引发/发送SIGSEGV进入native方法signal_handlernative代码捕获信号并将其记录下来native代码回调javanative代码再次记录以显示其已通过回调上面唯一不起作用的步骤是步骤3.2。似乎在

android - 奇怪的 : can not change the value of Integer in jni

我写了一个jni函数来在C中设置两个javaInteger对象的值,就像这样:jni_do_something(JNIEnv*env,jobjectthiz,jobjectp1,jobjectp2){jclassc;jfieldIDid;c=env->FindClass("java/lang/Integer");if(c==NULL){LOGD("FindClassfailed");return-1;}id=env->GetFieldID(c,"value","I");if(id==NULL){LOGD("GetFiledIDfailed");return-1;}env->SetInt

java - Android JNI native C 函数调用杀死 Activity

什么有效:我有一个运行TUN/TAP服务的c可执行文件,以及两个在终端中运行良好的shell脚本(用于配置“ip路由”和“iptables”),均以root身份运行。什么不起作用:我正在尝试创建一个Android应用程序来在按下按钮后运行c可执行文件和shell脚本。我最初这样做是为了让onClick使用processBuilder创建一个进程,如下所示:finalButtonbutton1=......publicvoidonClick(Viewv){Stringip_address=edIPAddress.getText().toString();Processprocess;tr

android - 媒体元数据检索器 JNI (14060) : getFrameAtTime: videoFrame is a NULL pointer(Android)

我正在使用MediaMetadataRetriever按视频帧创建缩略图,但我在Logcat中收到此消息:E/MediaMetadataRetrieverJNI(14060):getFrameAtTime:videoFrameisaNULLpointer这是我的代码:MediaMetadataRetrieverretriever=newMediaMetadataRetriever();try{UrivideoURI=Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.video_one);retriever=newMed

Java:在 JNI 中访问静态最终字段

有没有办法在JNI中访问静态最终字段?publicclassTryMe{publicinta=1;publicfinalintb=2;publicstaticintc=3;publicstaticfinalintd=4;}C++JNI代码:jclasscls=env->FindClass("my/package/TryMe");jfieldIDa=env->GetFieldID(cls,"a","I");//OKjfieldIDb=env->GetFieldID(cls,"b","I");//OKjfieldIDc=env->GetStaticFieldID(cls,"c","I");

java - 如何在 JNI 中查找二维数组大小

我来这里是为了征求您对我的问题的建议。我是新来的蜜蜂,从昨天开始我就被困在这个问题上,但无法解决。我试图在JNI中找到二维数组大小,但没有得到成功的结果。我拥有的以下代码。你们能解决我的问题吗?JNIEXPORTjintJNICALLJava_com_example_imagejoiner_MyJoiner_test(JNIEnv*env,jobjectjavaThis){LOGV("testprint");return1;}JNIEXPORTvoidJNICALLJava_com_example_imagejoiner_MyJoiner_joinNative(JNIEnv*env,j

java - JNI 错误 : accessed stale weak global reference

我在我的native代码中缓存了对Java对象的引用,就像这样://javaglobalreferencedeleter//_JAVA_ENVisaninstanceofJNIEnvthatiscachedgloballyandjust//validincurrentthreadscopestaticvoidg_java_ref_deleter(jobjectptr){_JAVA_ENV->DeleteGlobalRef(ptr);}//nativeclasscachesajavaobjectreferenceclassNativeA{private:shared_ptrM_java_