随笔分类 - android-jni
摘要:#include "openssl/rsa.h" #include "openssl/pem.h" #include "openssl/err.h" #include "openssl/evp.h" #include "openssl/ec.h" #include <string> #include
阅读全文
摘要:需要ubuntu安装patchelf软件:sudo apt-get install patchelf 1. 先使用readelf -d查看so内容结构 先使用readelf -d libpsl.so.5.3.5 查看libpsl.so.5.3.5库类型是NEEDED和SONAME的对应的名称是不是以
阅读全文
摘要:Ubuntu20环境下Android开发交叉编译curl库给Android使用 1. 编译zlib库 官网:http://zlib.net/ 解决后面出现的error: --with-openssl was given but OpenSSL could not be detected export
阅读全文
摘要:openssl编译 本篇文章的操作是在Linux环境之下,在虚拟机ubuntu 20版本上操作的步骤 1. openssl下载解压tar包 openssl下载地址:https://openssl-library.org/source/ 下载完解压:tar -zxvf openssl-3.3.2.ta
阅读全文
摘要:出现这个问题的原因对应.c或者.cpp的实现有问题,包括无法链接so库、或者是.c或.cpp没有编译成功、或者是.c或.cpp编译成功了但是实现是有问题的。 首先我们明确了出现这个问题原因就知道排查方向了,这很重要。 如果使用的是.h头文件与so库的形式,我们只能排查so链接的问题了,比如so库路径
阅读全文
摘要:android开发 [CXX1104] NDK from ndk.dir at androidSdk\ndk\21.1.6352462 had version [21.1.6352462] which disagrees with android.ndkVersion [21.0.6113669]
阅读全文
摘要:android开发cmake编译多个有相互依赖的c/cpp模块源代码的配置方法 1. 项目目录结构配置如下: root-project //根目录直接引用根目录下的CMakeLists cpp1Project /src/main/c/CMakeLists.txt //cpp1的 cpp2Projec
阅读全文
摘要:问题: java.lang.UnsatisfiedLinkError: No implementation found for xxx java.lang.UnsatisfiedLinkError: dlopen failed: library "xxx.so" not found 解决方法: de
阅读全文
摘要:Android studio查看cmake使用message方法打印出来的调试信息 CMakeLists.txt文件使用message()函数打印调试信息,比如:message(" test ") app/.cxx/cmake/debug/armeabi-v7a/build_output.txt文件
阅读全文
摘要:Android studio下编译Google BreakPad的步骤 具体看Github项目,已经编译好的,可以直接使用:https://github.com/yongfengnice/androidBreakpad
阅读全文
摘要:cmake下的abiFilters和ndk下的abiFilters的区别 externalNativeBuild { cmake { cppFlags "" abiFilters = ["armeabi-v7a","arm64-v8a"] //指定编译c、c++代码时生成armeabi-v7a和ar
阅读全文
摘要://kotlin层 external fun listFiles(filePath:String): String //native层 #include <jni.h> #include <string> #include <dirent.h> #include <android/log.h> #i
阅读全文
摘要:1. 子模块1:gmath静态库CMakeLists.txt #要求的cmake最小版本cmake_minimum_required(VERSION 3.4.1)#打开cmake输出日志set(CMAKE_VERBOSE_MAKEFILE on)#添加静态库,库名称gmathadd_library(
阅读全文
摘要:在普通的C语言里,如果想将函数或者变量使用范围现在在当前文件,需要对其添加static修饰。但如果希望将其暴露给共享库的指定文件,需要通过符号隐藏显示来控制。GCC4.0以后提供了符号可见性选项-fvisibility=vis,vis可以是默认值default、或者hidden表示隐藏。对应的代码可
阅读全文
摘要:#include <android/log.h> #define MODULE_NAME "LOG-NAME"#define LOGV(...) \ __android_log_print(ANDROID_LOG_VERBOSE, MODULE_NAME, __VA_ARGS__)#define L
阅读全文
摘要:JNI DETECTED ERROR IN APPLICATION: JNI NewGlobalRef called with pending exception java.lang.UnsatisfiedLinkError: method:makesureAuthed, sig:(Ljava/la
阅读全文
摘要:一段时间不接触了jni开发了,jni里的方法返回jstring,就直接返回了诸如"success"之前的字符串,导致一直报这个错,正确的做法是:jstring的类型需要返回(*env)->NewStringUTF(env, "success")也就是说出现这个问题,原因就是jni作为中间层和java、c层的数据类型是不一致的,需要转化的。所以遇到这个类似的错误,就需要看看是不是类型不兼容引起的。
阅读全文
摘要:1. 我的Android.mk文件如下: LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := test #构建生成的so动态库的名称LOCAL_SRC_FILES := test.c #这个文件里使用到cpufeature
阅读全文