
ndk
沐恩_
自强不息,厚德载物
展开
-
android jni jbyteArray和char*互相转换
jstring charToJString(JNIEnv *env, char *pat) { jclass strClass = env->FindClass("java/lang/String"); jmethodID ctorID = env->GetMethodID(strClass, "<init>", "([BLjava/lang/Strin...原创 2020-03-18 14:46:25 · 6377 阅读 · 0 评论 -
Android studio中NDK开发(三)——JNI层日志打印
一、前言JNI层是Java和C/C++的桥梁,在Java层中我们通常会使用Log.v()/Log.e()等来进行日志打印,在C中使用printf方法,但在JNI层这些方法是无法在Android studio中下的Logcat中显示的,需要用到另外的库,这个已经打包在log.h头文件中。二、步骤1、在C/C++文件,即.c或.cpp文件中引入log.h头文件#include <...转载 2020-03-02 10:42:07 · 1078 阅读 · 0 评论 -
Android studio中NDK开发(五)——C嵌套结构体与Java类在JNI层的传输
一、前言最近在Android上的NDK开发时遇到一个问题,在Java层需要获取到设备的注册信息,然后在JNI层将这些信息封装为结构体参数的形式传递到C++中的方法中进行处理。也就是说,在Java层获取到的信息需要先转换成结构体,再传进去,在C++和Java的JNI层转换的这个过程中整整卡了两三天,一直找不到解决问题的思路。二、分析从结构体的特性来看,其实结构体就是不同属性的合集,只不...转载 2020-03-02 10:39:18 · 895 阅读 · 0 评论 -
Android studio中NDK开发(二)——使用CMake引入第三方so库及头文件
一、前言通常来说,第三方提供的so库以及头文件都没有没有引入jni.h头文件。所以我们在导入第三方so库以及头文件的时候需要手动的将其关联到官方的native-lib库中,关联成功后就可以在native-lib中include进第三方头文件,引进头文件成功后就可以在自定义的JNI接口中对第三方头文件中内容进行调用。二、准备第三方so库以及头文件创建一个默认的NDKDemo(可按照CMak...转载 2020-03-02 09:22:01 · 2225 阅读 · 0 评论 -
Android 简单使用第三方提供的.so和.h (Android.mk和Application.mk方式)
前言:刚来公司,接了一个项目(具体项目不便透露),其中涉及到一个socket数据传输的问题,这里当然就不可避免的用到了.so动态库进行实现。接触过jni的应该都知道,Android调用.so库其实很简单,不就是直接static { System.loadLibrary(“aaron”); }吗?其实我救算这么想的,但是直到我拿到.so和.h文件之后才发现我错了。好了,废话不说了,进入正题:实...转载 2020-02-28 14:03:32 · 1388 阅读 · 0 评论 -
Android mk 引用 jar 包、so 库、aar 包,系统签名 stormjun94
转载请注明原博客地址写在最前面刚开始在 Ubuntu 编译系统源码的时候, 需要在 mk 文件里面配置各种东西,对比在 AndroidStudio 敲代码,那可真的是 TMD 麻烦(那时候内心仿佛有千万只马奔腾),不过后面心态渐渐变好了,每个人都是一样,刚开始对于新的并且暂时不理解又看不到优点的东西,内心总是抗拒的,总会第一时间抗拒它,否定他。其实,这往往会影响我们的成长,对于各种新的东西...转载 2019-10-22 13:37:58 · 603 阅读 · 0 评论 -
linux 线程操作问题undefined reference to 'pthread_create'的解决办法(cmake)
https://www.cnblogs.com/jiu0821/p/5855827.html问题原因:pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a.所以在使用pthread_create()创建线程时,需要链接该库。1. 终端:问题解决:在编译中要加 -pthread参数 gcc thread.c -o thread...转载 2019-10-22 09:48:09 · 440 阅读 · 0 评论 -
android jni 使用别人编译好的c/c++动态so库
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.youkuaiyun.com/itlavn/article/details/80164456别人写好的动态库,需要自己写jni包一层,这样就可以在java中调用这个库了。其实还有第二种方法,就是使用jna来调用,这样不用写jni,但是今天我们不讨论jna的用法。这里介...转载 2019-10-22 09:46:54 · 804 阅读 · 0 评论 -
[cmake]java.lang.UnsatisfiedLinkError: dlopen failed: library “libxxx.so” not found 问题解决
第一次使用CMake 卻出現了以下的error,奇怪的是在compiler time並沒有錯誤訊息,在 run的當下卻馬上出現了Exception,錯誤訊息如下:java.lang.UnsatisfiedLinkError: dlopen failed: library “../../../../libXXX.so” not found拿別的third party .so檔完全...转载 2019-10-22 09:43:04 · 13062 阅读 · 0 评论 -
CMake 入门实战
什么是 CMakecmake.jpgCMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不相依于某特定编译器。并可支持多层目录、多个应用程序与多个库。 它用配置文件控制建构过程(build process)的方式和Unix的make相似,只是CMake的配置文件取名为CMakeLists.txt。CMake并不直接建构出最终的软件,而是产生标准的建构档(如U...转载 2019-10-22 09:34:43 · 316 阅读 · 0 评论 -
Android JNI学习-调用第三方SO库
正在准备中的项目里,有一部分打算直接移殖Linux开发组在之前就完成的功能,他们是使用C语言开发。考虑到维护的问题,准备让他们将代码打包成so文件,再引用到我的项目中。这样也就相当于我去引用一个第三方库,并且这个库中的代码格式也不一定是我们JNI开发时规定的命名,因此,需要通过我自己的C文件再去调用so库中的方法。1 生成SO库1.1 Native方法新建项目JNISODemo,在Ma...转载 2019-10-21 08:55:47 · 5053 阅读 · 0 评论 -
Android studio添加第三方库和so
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.youkuaiyun.com/longmeifeng/article/details/51353407以下两种方式二选一方法一:1.在src/main中新建jniLibs文件夹 ,把.so复制进去即可方法二:1.在app/中新建libs文件夹...转载 2019-10-21 08:53:02 · 778 阅读 · 0 评论 -
Android JNI(一)——NDK与JNI基础
https://www.jianshu.com/p/87ce6f565d37本系列文章如下:Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Native相互调用 Android JNI学习(四)——JNI的常用方法的中文API Android JNI...转载 2019-10-18 10:03:30 · 228 阅读 · 0 评论 -
Android Studio3.0 NDK配置与开发
前言最近在学习JNI开发, 查阅<Android开发艺术探索>和网上很多文章, 发现很多知识都已经过时了, 经过一天的踩坑, 最终还是在官方文档中找到了解决方案, 下面就记录下在Android Studio3.0中NDK的配置和开发官方文档(需要科学上网)向您的项目添加 C 和 C++ 代码开发环境系统: Mac os 10.13.3软件: Android Stu...转载 2019-01-04 16:05:36 · 752 阅读 · 0 评论