草庐IT

hello-jni

全部标签

android - 在 Android : UNsatisfiedLinkError 中使用 jni

我是jni的新手,我正在阅读一个教程来实现一个简单的native方法,但我遇到了一个不满意的链接错误。据我所知,我完全按照教程中的步骤操作。请帮助我。这是java包装器代码:packagecom.cookbook.jni;publicclassSquaredWrapper{//Declarenativemethod(andmakeitpublictoexposeitdirectly)publicstaticnativeintsquared(intbase);//Provideadditionalfunctionality,that"extends"thenativemethodpubl

java - 调用静态 JNI 方法以从 C++ 返回字符串

我正在尝试在Android中调用以下java方法publicstaticStringgetLevelFile(StringlevelName){/*body*/}从c++使用以下jni代码JniMethodInfoJavaApimethodInfo;if(!getStaticMethodInfo(methodInfo,"getLevelFile","(Ljava/lang/String;)Ljava/lang/String;")){returnstd::string("");}LOGD("callinggetLevelFile");jstringreturnString=(jstrin

HarmonyOS ArkTS语言,运行Hello World(二)

一、认识DevEcoStudio界面进入IDE后,我们首先了解一下基础的界面。整个IDE的界面大致上可以分为四个部分,分别是代码编辑区、通知栏、工程目录区以及预览区。代码编辑区1、中间的是代码编辑区,你可以在这里修改你的代码,以及切换显示的文件。通过按住Ctrl加鼠标滚轮,可以实现界面的放大与缩小。2、通知栏在编辑器底部有一行工具栏,主要介绍常用信息栏,其中Run是项目运行时的信息栏,Problems是当前工程错误与提醒信息栏,Terminal是命令行终端,在这里执行命令行操作,PreviewerLog是预览器日志输出栏,Log是模拟器和真机运行时的日志输出栏。在后续使用中会陆续接触。3、工程

android - 如何从 JNI 启动一个新线程

我需要从android应用程序的native部分启动一个新线程。它必须在JNI中声明和定义。有人知道我该怎么做吗?如果有人会发布示例,我将非常高兴。 最佳答案 最简单的方法是使用C++11线程类。参见thistopic关于如何使用AndroidNDK启用C++11。另见thispost如果您在让线程类工作时遇到问题。然后你可以像这样使用它:#include//std::threadvoidfoo(){//dostuff...}voidbar(intx){//dostuff...}JNIEXPORTvoidJNICALLJava_or

android - 如何将字节数组从 android java 类传递到 JNI C NDK?

我在java类中有字节数组,我想将该字节数组传递给JNIC类,我无法在JNIC中访问该数组,请帮忙。 最佳答案 您需要像这样声明接收数组的JNI函数(在Java中):privatenativevoidsendData(byte[]data);您可以像调用任何其他函数一样调用该函数:sendData(buffer);然后在您的C代码中实现如下函数:JNIEXPORTvoidJNICALLJava_com_packageXXX_yourClass_sendData(JNIEnv*env,jobjectthiz,jbyteArraydat

HarmonyOS试着运行一个Hello World

引言 曾经我们都是一个意气风发的少年,我幻想自己就是主角、我有思想、我有别人没有的信息差!这正是我向操蛋的人生开的第一枪,但是我并没有加油向前继续补枪。我迈出高强度的学习校园后,来到了自由自在无人压力的社会,开始沉迷在游戏中,我控制人物左左右右,拿起步枪大杀四方。看着自己高端的游戏段位,我却心生迷茫,耳边枪生呼啸而过,还好没有打中眉心,不过我究竟何去何从呢,我的人生目标又是什么呢?哈哈哈,游戏罢了,游戏罢了,回想自己荒唐的生活,深夜下的一个个可笑的决定,我就觉得我好像一个joker啊。我是喜欢游戏的,我突然发现人生就像一个游戏啊。既然你读了这个荒唐的文章,那么不妨继续荒唐的读下去,做下去。敢不

android - 检测 Android JNI 代码中的 native 内存泄漏

如何检测AndroidJNI代码中的内存泄漏?我正在使用Froyo 最佳答案 2017年更新:valgrindisavailable对于安卓。内置的malloc调试功能在AndroidN中得到了显着扩展,并且对于查找内存泄漏非常有用。您可能需要_exit()应用程序来触发转储。下面描述的DDMS功能目前获得briefmention在官方文档中。您可以利用一项不受支持的实验性功能。在您的DDMS配置文件中(例如Linux上的~/.android/ddms.cfg),添加“native=true”。这会启用NativeHeap选项卡。接

java - 从 native 函数(c++、jni)返回一个 int 会使应用程序崩溃

试图找出为什么返回int的c++函数调用会导致整个应用程序崩溃而没有任何错误/警告。这是工作代码:jintJava_org_ntorrent_DummyTorrentInfoProvider_next(JNIEnv*env,jobjectobj,jintnumber){jinttest=rand();__android_log_print(ANDROID_LOG_DEBUG,"HelloNDK!","rand()=%d",test);returnnumber;}这段代码在没有警告的情况下使应用程序崩溃:jintJava_org_ntorrent_DummyTorrentInfoProv

android - JNI 加载 : Warning : Do not hardcode use Context. getFilesDir().getPath() 而不是

我的一个应用程序遇到问题,我有以下代码来加载应用程序需要的库(JNI):static{//loadtheJNIlibraryLog.i("JNI","loadingJNIlibrary...");System.load("/data/data/com.mypackage.appname/lib/libxxxxxx.so");Log.i("JNI","JNIlibraryloaded!");}所以我得到警告:“请注意硬编码使用Context.getFilesDir().getPath()代替”这是完全正确的(它不会在所有设备上都可移植)。问题是,因为我使用的是静态的,所以我无法调用Con

java - 什么是使用 JNI 的 byte[] 字节数组的方法描述符/签名?

我的JAVA类代码fragment。我想使用JNI从我的C文件访问getReg_chal()方法:publicbyte[]getReg_chal(){returnreg_chal;}我的C文件执行一些jni操作:mid=(*env)->GetMethodID(env,info,"getReg_chal()","([B)V");mid=(*env)->GetMethodID(env,info,"getReg_chal()",***);我想知道我的byte[]的方法描述符。编写"({B)V"给我方法未找到错误。我要填***什么?请帮我。提前致谢。 最佳答案