Android Gradle工程引入三方so库的方法

#背景

在做安卓逆向工程的时候,有时候需要引入三方开发好的jni库,这些库可能非常老旧,甚至是32位的,本文记录引入的过程,便于快速查找

1.把so库拷贝到工程中

一般是如下两个目录

app\src\main\jniLibs\armeabi-v7a

或者

app\src\main\jniLibs\arm64-v8a

2.拷贝原工程中的jni函数定义到新工程中,注意,包名不能变!即文件路径不能变化

例如:

3.在工程任意处加入加载so的代码,一般放到MainActivity.java中

复制代码
    static {
        System.loadLibrary("xxx");
        System.loadLibrary("play");
    }

注意,不要带lib,不要带后缀,上述so实际文件名是libplay.so

4.需要在 app/build.gradle 中配置:

复制代码
android {
    defaultConfig {
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86'
        }
    }
}

5.完成上述步骤后,即可在java文件中通过Jni.xxx引用so库中的静态方法了

enjoy!

相关推荐
道尔柯南13 小时前
C++ string 类详解:从常用接口到深拷贝,彻底掌握字符串处理
android·java·c++
唐诺14 小时前
5、Android JNI 动态注册中的“签名“详解
android·jni
zhaoshuzhaoshu17 小时前
Android 系统启动与调试中的日志抓取方式全解析
android
雨声不在18 小时前
android 动画掉帧
android
在多学一点19 小时前
MYSQL第二次作业
android·数据库·mysql
骑着蜗牛撵大象32719 小时前
MySQL 8.0 迁移后 SQL 变慢:执行计划里 3 类被忽略的成本差异
android·数据库·sql·mysql·优化器·执行计划
我叫张土豆20 小时前
Android 14+ 模拟器抓包实录:把 Burp CA 装成系统 CA,让 targetSdk≥34 的 App 乖乖解密
android
booboosui1 天前
Android 悬浮窗藏不住自己:一个标志位与 140 毫秒
android
传奇开心果1 天前
【Flutter踩坑排雷】第5课:扩展方法冲突坑|同名扩展引发编译歧义,故障规避手段
android·flutter
.痞老板.1 天前
mysql初阶--数据类型
android·数据库·mysql