详解Android studio中正确引入so文件的方法
发布时间 - 2026-01-11 03:13:57 点击率:次相信很多朋友在使用Android studio开发中,遇到过如何引入第三方so文件的问题,然而第三方官方仅仅给出了ADT环境下的集成方式。
Android studio中默认使用的是gradle编译方式,与ADT编辑方式不一样,那么so文件应当如何引入呢?

其实很简单。这里以集成JPUSH为例,看一下so文件如何引入到编译环境,最终到JNI直接可以调用该so文件。
首先,在我们的Module的根目录中建立libs目录,将jpush集成SDK中的so文件分别拷入,截图如下:
然后就是编写我们的build.gradle文件。
关于so文件引入的配置很简单,代码配置如下:
task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
destinationDir file("$projectDir/libs")
baseName "Native_Libs2"
extension "jar"
from fileTree(dir: "libs", include: "**/*.so")
into "lib"
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
自定义一个任务,在其中指定项目所依赖的so文件的目录,这里用了**/*.so来写,为了省事,指定需要拷入的目录 into "lib",那么动态运行库就被拷入到lib目录中。
完整的build.gradle文件如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
applicationId "com.wujay.footerballstar"
minSdkVersion 8
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
destinationDir file("$projectDir/libs")
baseName "Native_Libs2"
extension "jar"
from fileTree(dir: "libs", include: "**/*.so")
into "lib"
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.0'
compile files('libs/jpush-sdk-release1.7.2.jar')
compile files('libs/umeng_sdk.jar')
compile files('libs/libammsdk.jar')
}
基于有人在评论区提问,这里补充一下,有一个更为快捷轻快的配置方法
那就是在build.gradle配置中,配置如下的信息:
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
你的so包可以放在lib目录下,跟jar包放在同样的目录,如lib/armeabi/libjpush172.so。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# android
# studio引入so
# studio
# so
# studio导入so
# Android studio so库找不到问题解决办法
# Android Studio 报错“app:processDebugResources"解决方法
# 详解Android Studio如何导入第三方类库、jar包和so库
# 浅谈Android Studio JNI生成so库
# Android Studio打包.so库到apk中实例详解
# Android Studio工程引用第三方so文件的方法
# 放在
# 第三方
# 的是
# 是在
# 出了
# 那就
# 用了
# 很简单
# 自定义
# 为例
# 看一下
# 遇到过
# 大家多多
# 来写
# 有一个
# 其实很简单
# 运行库
# 目录下
# 在我们的
# 目录中
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Python制作简易注册登录系统
个人网站制作流程图片大全,个人网站如何注销?
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
JS去除重复并统计数量的实现方法
UC浏览器如何设置启动页 UC浏览器启动页设置方法
Laravel如何与Inertia.js和Vue/React构建现代单页应用
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
如何快速搭建高效可靠的建站解决方案?
浅谈javascript alert和confirm的美化
如何用美橙互联一键搭建多站合一网站?
LinuxCD持续部署教程_自动发布与回滚机制
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何在IIS7上新建站点并设置安全权限?
如何快速生成ASP一键建站模板并优化安全性?
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
如何在云主机上快速搭建多站点网站?
php打包exe后无法访问网络共享_共享权限设置方法【教程】
WordPress 子目录安装中正确处理脚本路径的完整指南
Java类加载基本过程详细介绍
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
JavaScript中的标签模板是什么_它如何扩展字符串功能
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
微信推文制作网站有哪些,怎么做微信推文,急?
如何快速生成凡客建站的专业级图册?
青岛网站建设如何选择本地服务器?
如何自定义建站之星模板颜色并下载新样式?
千库网官网入口推荐 千库网设计创意平台入口
Java垃圾回收器的方法和原理总结
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
如何在建站之星绑定自定义域名?
如何用5美元大硬盘VPS安全高效搭建个人网站?
在Oracle关闭情况下如何修改spfile的参数
如何快速查询网站的真实建站时间?
Windows Hello人脸识别突然无法使用
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
如何在阿里云ECS服务器部署织梦CMS网站?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
北京企业网站设计制作公司,北京铁路集团官方网站?
iOS UIView常见属性方法小结
制作旅游网站html,怎样注册旅游网站?
如何在新浪SAE免费搭建个人博客?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
Swift中循环语句中的转移语句 break 和 continue
如何快速搭建高效香港服务器网站?

