
ndk
奔跑的_迷彩狼
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android NDK C++log报错
__android_log_print(ANDROID_LOG_DEBUG,TAG,__VA_ARGS__)正常使用:LOGD("123 sdk ,config handler,rows,cols:");但是如果你想输出一个string,或者char*的话:LOGD(targetFileNameStr.data());上面这些写会报错:error: format string is not a string literal带个0就可以了,下面我把TAG也加上了:LOG.原创 2022-03-31 10:27:00 · 2883 阅读 · 0 评论 -
Android NDK multiple definition of `xxxx`
检查C++代码是否定义了相同class。不同文件夹下同名的.cpp是没问题的,但是不能定义相同名字的class。原创 2021-08-17 14:54:21 · 336 阅读 · 0 评论 -
android error: undefined reference to 总结
总的来说一般是两种情况:1.代码(库)缺失,或者没有编进去。踩坑参考:https://blog.csdn.net/qq_24712507/article/details/1154626312.CMakeLists没有链接进去。细分一般是下面几种情况:1.真的缺失文件。这个就非常不细心了。。。2.只有.h文件没有.cpp的实现文件。这种情况.h的函数会报警告,排除警告的时候会创建函数实现,此时请注意。3.链接库的顺序问题。常见引入第三方的情况。比如o原创 2021-08-16 11:33:17 · 1189 阅读 · 0 评论 -
Android Studio CMake 引入静态包.a 以OpenCV为例
以OpenCV为例,记录开发过程并附上部分踩坑细节1.引入openCV的.a包,官方SDK目录如下:记得第三方也要引入。引入后的样子如下:你会发现,x86和arm的包不太一样。2.引入OpenCV头文件.h .hpp首先,在你的cpp/include下,加入openCV的头文件,如下图:官方SDK在这里:3.CMake引入.a及你自己的c++源码先引入头文件:set(libs ${CMAKE_SOURCE_DIR}/..)include_directo原创 2021-05-25 17:02:25 · 3205 阅读 · 3 评论 -
C++ 与Android NDK的C++语法不同的地方及需要注意的地方
语法:C++是可以这样写的:uint8_t in[bytesCount] = {0};在NDK会报错:error: variable-sized object may not be initialized所以需要改成另一种方式:uint8_t *in = new uint8_t[bytesCount];用完之后记得delete掉:delete in;未完待续;...原创 2021-04-19 12:04:08 · 277 阅读 · 0 评论 -
NDK开发过程中的问题解决方案总结
1.jni代码里面声明char*这种带*的,用完之后记得delete,否则内存泄露。2.c++这边是用回参的方式传递参数,也就是指针、地址的方式,但是java没有啊。jni提供了SetByteArrayRegion 这种方式,env->SetxxxArrayRegion()这种方式,把c++代码里面的回参,复制到java里面变量申请的内存空间。不过,Object相关的没有找到,比较复杂的数据类型没有找到。3....原创 2021-04-14 16:57:44 · 159 阅读 · 0 评论 -
Android上Camera获取byte数据在native层进行转换(转)
openCV的C++底层库用在android里面open()不了,遂换了种方式。用原生Camera的视频流封装成Mat再进行操作。转发自:https://blog.csdn.net/Taily_Duan/article/details/52756166我只能说是真的牛逼这个单通道的,代码是jni的: jbyte * pBuf = (jbyte*)env->GetByteArrayElements(yuv, 0); int width = w; int height = .转载 2021-04-13 16:27:54 · 992 阅读 · 0 评论 -
NDK开发记一下内存泄露,局部变量带*的没有释放
场景:摄像头数据byte流通过jni转换为char*给Cpp。转换过程崩了。转换过程参考这一篇:https://blog.csdn.net/bzlj2912009596/article/details/78715658然后复制粘贴到我的jni转换里面:打码的那行是调用,乍一看没问题。但是内存成喜马拉雅了:是这个原因,虽然人家博客里面写了delete,但是在调用部分。我以为局部变量不用回收,是我太可爱了。。。带*的还是回收一下把。回收后的内存还算正常:因为是demo原创 2021-04-12 15:12:45 · 288 阅读 · 0 评论 -
android studio NDK opencv2开发过程(自己的C++文件引入opencv的cpp源码)
写在前面:android2.2+就支持cmake了,现在最新版都android4.n了,结果网上还是一堆的mk开发NDK。无奈,自己干吧。然后opencv官网文档竟然也是mk的,还是eclipse,我去。。。2021年了还在用五年前的技术。。。各位开发者请奋起!不要总是复制粘贴改别人的bug,挑战下自己吧!此篇也是建立在openCV官方教程、demo的基础上的,是总结性博客。OpenCV官网:https://opencv.org/android/这个地址是你下载的官方androi原创 2021-04-06 16:02:42 · 834 阅读 · 0 评论 -
android studio NDK源码开发,cpp文件点Sync Now没有用,代码加载不进去,std爆红引入文件路径不对
Please include it in the appropriate build file(build.gradle,CMakeLists.txt or Android这个问题,先参考下这一篇:https://blog.csdn.net/qq_24712507/article/details/115296076(不是给自己引流哈,不太喜欢做重复工作)如果解决不了,删除这四个文件夹:Build -> Rebuild Project (最好不要选Make Project)这原创 2021-04-06 15:52:03 · 1555 阅读 · 0 评论 -
NDK 引入C++ 报找不到头文件fatal error: ‘opencv2/core/cvdef.h‘ file not found
文件路径问题,当前你打开的文件的路径是当前文件的文件夹。就如下文件cvdef.h是在opencv2\core路径下,在此路径引入opencv2/core/是没有的,需要先退回到父目录opencv2的父目录才能这样去写。所以改的话,改成这样即可:当前文件路径已经在opencv2/core了。如果需要在上一级目录里面找文件,用的是terminal的方式:..如果是更上一层的,那就是../../嗯......但是这样改的话需要每个文件都去改,小生不才,不会改编辑器默认的当前文件原创 2021-04-02 09:19:21 · 1358 阅读 · 0 评论 -
android studio NDK开发记录 CMakeLists 有cpp、h源码
19年那会儿我还搞过,两年过去了很多步骤忘记了,再就是android studio也升级换代了好几个,网上搜的大部分都过时了,以此记录开发过程。CMakeLists开发;android studio3.6.2,如果选择4.n也能凑合用;gradle-5.6.4-all.zip;classpath 'com.android.tools.build:gradle:3.6.2';compileSdkVersion 30 buildToolsVersion "30.0.3"(这个无所谓,晒出来的意思是最新的也一原创 2021-03-31 12:21:15 · 408 阅读 · 0 评论 -
NDK报错 No implementation found for int com.xxx.xxx tried Java_com_xxx_xxx_xxx_xx
No implementation found for int com.xxx.xxx.Methods.Initialize(java.lang.String) (tried Java_com_xxx_xxx_Methods_Initialize and Java_com_xxx_xxx_Methods_Initialize__Ljava_lang_String_2)一般出现这种问题是因为你的java对应C的class的包名路径与so里面的不一致。解决方案:如果你不知道C源工程的话,so里面声明原创 2021-03-31 10:11:31 · 3293 阅读 · 2 评论 -
NDK开发,加载so库,运行崩溃JNI DETECTED ERROR IN APPLICATION: JNI RegisterNatives called with pending exception
JNI DETECTED ERROR IN APPLICATION: JNI RegisterNatives called with pending exception java.lang.ClassNotFoundException: Didn't find class "com.xxx.xxx" on path: DexPathList[[zip file "/data/app/com.xxx.ndkdemo-sKdbYfzMstKNudU5YHhsJQ==/base.apk"],nativeLibra原创 2021-03-30 16:59:36 · 4213 阅读 · 0 评论 -
NDK编译多个cpp文件 报Please include it in the appropriate build file(build.gradle,CMakeLists.txt or Android
android studio,cmake方式实现NDK开发问题:新增cpp或者粘贴过来的cpp文件爆红,头文件引用不了,比如"string"等。网上大量资料都是旧版方式而且都是单一cpp文件的demo,当添加第二个cpp文件的时候就会报这个错误:This file is not part of the project. Please include it in the appropriate build file(build.gradle,CMakeLists.txt or Android.mk e原创 2021-03-29 11:10:47 · 1918 阅读 · 0 评论 -
导入别人的项目ndk-bundle/ndk-build.cmd'' finished with non-zero exit value 2
更换项目一样的NDK版本https://blog.csdn.net/Alex_yuan666/article/details/83791670转载 2019-06-20 11:22:16 · 4459 阅读 · 0 评论 -
Android NDK知道源码的情况下,重新生成so库,及多jar包类名相同情况的解决
重新生成so库,主要是谷歌的串口库,为了避免多串口多厂家冲突,打jar包必须改名:参考:https://blog.csdn.net/oYuDaBaJiao/article/details/80525700?utm_source=blogxgwz9但是,上述链接的C函数名没有改,运行报错的那个名字覆盖掉之前的JAVA_XXXXXX_open即可,还有close的。JNI纯手写也要记得改名...原创 2018-11-26 11:37:06 · 512 阅读 · 0 评论 -
android studio 2.2.3 导入第三方.so,并调用方法(无cpp、c源码)
android studio 2.2.3 导入第三方.so,并调用方法原创 2017-01-20 15:36:52 · 3864 阅读 · 4 评论 -
android studio JNI开发报错:java.lang.UnsatisfiedLinkError: Native method not found:... 的解决措施
android studio JNI开发报错:java.lang.UnsatisfiedLinkError: Native method not found:... 的解决措施原创 2016-12-29 13:27:09 · 2372 阅读 · 0 评论 -
android studio 2.2 NDK开发经验总结及相关错误汇总(旧版NDK开发转新版NDK开发经验)
android studio 2.2 NDK开发经验总结及相关错误汇总(旧版NDK开发转新版NDK开发经验)原创 2016-12-29 10:16:40 · 691 阅读 · 0 评论