完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
配置好JNI后我们来新建一个简单的demo,实现so库的生成和调用。
我们先新建一个demo。 打开Android stdio然后新建一个空白demo 然后设置这个demo的存储路径,注意语言要选择java。不要用推荐的kt。 完成后就进入Android stdio的编码界面了。然后右键app,new一个jni的文件夹。 直接点Finish。这个时候 这个JNI文件夹就出来了。如下图: 接下来我们需要在mainActivity中新建一个类,用来衔接Java和C语言。如下图 在弹出的对话框中声明我们要新建的类名。 完成后点击OK。 到这里我们才完成一半的工作。 我们找到我们刚才添加的类。在右边写上下面的代码。 1 用来加载我们生辰的so库。 2 我们随便写的一个用来测试的函数。 这个时候会提示我们GBK不认识。那么我们设置一下UTF-8就好了。 具体做法如下: -encoding UTF-8 这句话放到下图的地方。这句话一定要紧跟jni目录后面,位置一定不能错。 注意一定不要点开黄色的两个箭头添加,会出错。 到这里给我们的jniInterface class添加头文件。 如下图:右键jniInterface选择javah 这个时候打开jni文件夹能看到我们添加的头文件。 接下来我们找到这个头文件的存储目录,并添加三个文件。如下图: 在这个文件中添加如图三个文件,名字分别为:Android.mk Application.mk JNI.cpp 然后再这三个文件中添加源码。 Android.mk 源码: LOCAL_PATH := $(call my-dir) #获取Android.mk所在目录 include $(CLEAR_VARS) # 下面一句是用来指定so库生成位置的,感兴趣的朋友可以试试,确实可以改变so库生成位置。 # NDK_APP_DST_DIR=../../../../../SharedLibs/$(TARGET_ARCH_ABI) LOCAL_MODULE := jniTest #指定生成so库的名称 LOCAL_SRC_FILES := JNI.cpp #指定生成so库所需源码文件 include $(BUILD_SHARED_LIBRARY) #说明生成的是动态so库(这句是废话) Application.mk 源码: # APP_ABI :=armeabi armeabi-v7a mips x86 APP_ABI :=armeabi-v7a #指定生成的so库适用的cpu架构,这个是最常见的一种。 JNI.cpp 源码: #include"com_example_myapplication_jniInterface.h" JNIEXPORT jstring JNICALL Java_com_example_myapplication_jniInterface_tw_1jniTest (JNIEnv *env, jobject obj) { return env->NewStringUTF("TERAWINS"); } 到这里jni设置差不多就完成了,我们现在需要用ndk-build来编译一下我们刚才设置的jni,生成so库。如下图 右键jni文件夹->NDK->ndk-build 这个时候可以发现,main目录下面多了libs和obj。 下图红框就是我们生成的so库。 做到这里我们编译一下,发现没有错误。接着往下走。 我们找到layout->activity_main.xml 然后给我们的textView加个句柄。如下图: 找到mainActivity,添加如下图内容: 1 找到mainActivity文件 2 导入TextView包 3 先声明一个TextView tv 实例指向空。 4 让tv 指向我们上一步设置的TW句柄。 5 把我们用jni设置的返回字符串在tv指向的TextView中显示出来。 这个时候编译可以过但是app不能正常运行。 因为还有一个地方要设置: 在build.gradle中加入上图中红框的内容。屏蔽默认的库调用路径,使用我们刚生成的so库的调用路径。 为了设置so库调用路径。 最后设置成功,点击run. app在我们的RK3288上面跑起来,效果如下图: |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2062 浏览 1 评论
synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?
2649 浏览 1 评论
RK3588 GStreamer调试四路鱼眼摄像头四宫格显示报错
5421 浏览 1 评论
【飞凌嵌入式OK3576-C开发板体验】RKNN神经网络-YOLO图像识别
254 浏览 0 评论
【飞凌嵌入式OK3576-C开发板体验】SSH远程登录网络配置及CAN通讯
1336 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 10:53 , Processed in 0.520039 second(s), Total 40, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号