博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Studio 加载JNI与so文件
阅读量:2390 次
发布时间:2019-05-10

本文共 2267 字,大约阅读时间需要 7 分钟。

一、Android Studio里面进行jni源码编译

1、CMake编译

CMakeLists.txt

# For more information about using CMake with Android Studio, read the# documentation: https://d.android.com/studio/projects/add-native-code.html# Sets the minimum version of CMake required to build the native library.cmake_minimum_required(VERSION 3.4.1)# Creates and names a library, sets it as either STATIC# or SHARED, and provides the relative paths to its source code.# You can define multiple libraries, and CMake builds them for you.# Gradle automatically packages shared libraries with your APK.add_library( # Sets the name of the library.        # 设置so文件名称.        SerialPort-lib        # Sets the library as a shared library.        SHARED        # 设置这个so文件为共享.        # Provides a relative path to your source file(s).        # 设置这个so文件为共享.        SerialPort.c)# Searches for a specified prebuilt library and stores the path as a# variable. Because CMake includes system libraries in the search path by# default, you only need to specify the name of the public NDK library# you want to add. CMake verifies that the library exists before# completing its build.find_library( # Sets the name of the path variable.        log-lib        # Specifies the name of the NDK library that        # you want CMake to locate.        log)# Specifies libraries CMake should link to your target library. You# can link multiple libraries, such as libraries you define in this# build script, prebuilt third-party libraries, or system libraries.target_link_libraries( # Specifies the target library.        SerialPort-lib        # Links the target library to the log library        # included in the NDK.        ${log-lib})

2、build.gradle配置

externalNativeBuild {        cmake {            path "src/main/cpp/CMakeLists.txt"        }    }dependencies {    implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')}

二、Android Studio里面进行.so加载

1、将.so文件拷贝到lib目录下armeabi-v7a或者arm64-v8a下

2、build.gradle配置

sourceSets {        main {            jniLibs.srcDirs = ['libs']        }    }

三、Android Studio加载.so遇到的问题

1、E/art: dlopen("XXXXX.so", RTLD_LAZY) failed: dlopen failed: "XXXXXso" is too small to be an ELF executable: only found 0 bytes

解决:降.so文件重新复制覆盖源文件

2、uncautchexception

解决:将.so文件拷贝到lib目录下armeabi-v7a或者arm64-v8a下

转载地址:http://xsxab.baihongyu.com/

你可能感兴趣的文章
符号执行
查看>>
Remote Installation Service (RIS) in Windows Server 2003
查看>>
Layer Four Traceroute
查看>>
Hardening guide for Apache 2.2.15 on RedHat 5.4 (64bit edition)
查看>>
Microsoft Outlook Web Access (OWA) version 8.2.254.0 information disclosure vulnerability
查看>>
STP mitm attack idea
查看>>
Month of PHP Security - Summary
查看>>
近期将要购买的图书
查看>>
nginx Directory Traversal Vulnerability
查看>>
Linux下apache+svn+ssl完美结合搭建安全版本控制平台
查看>>
Nginx 0.8.35 Space Character Remote Source Disclosure
查看>>
showrun的cissp经验谈
查看>>
6月4日要买的书
查看>>
nginx Remote Source Code Disclosure and Denial of Service Vulnerabilities
查看>>
Anti-sec安全培训 部分试看视频
查看>>
FreeBSD kernel NFS client local vulnerabilities
查看>>
JXplorer 的简单使用
查看>>
如何启用 LDAP 签名 Windows Server 2008 中
查看>>
获取ngnix,apache,php,mysql的编译参数 zz from xi4oyu
查看>>
使用ettercap嗅探ssh口令
查看>>