全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Android studio中正确引入so文件的方法

相信很多朋友在使用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文件的方法  # 放在  # 第三方  # 的是  # 是在  # 出了  # 那就  # 用了  # 很简单  # 自定义  # 为例  # 看一下  # 遇到过  # 大家多多  # 来写  # 有一个  # 其实很简单  # 运行库  # 目录下  # 在我们的  # 目录中 


相关文章: 学校为何禁止电信移动建设网站?  在线教育网站制作平台,山西立德教育官网?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  建站之星导航菜单设置与功能模块配置全攻略  北京制作网站的公司,北京铁路集团官方网站?  如何获取上海专业网站定制建站电话?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  大同网页,大同瑞慈医院官网?  如何快速查询域名建站关键信息?  php json中文编码为null的解决办法  上海网站制作开发公司,上海买房比较好的网站有哪些?  开封网站制作公司,网络用语开封是什么意思?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  已有域名和空间,如何快速搭建网站?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  网站制作免费,什么网站能看正片电影?  制作网站外包平台,自动化接单网站有哪些?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  如何快速上传自定义模板至建站之星?  如何通过西部建站助手安装IIS服务器?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何选择高效稳定的ISP建站解决方案?  建站之星会员如何解锁更多建站功能?  建站之星24小时客服电话如何获取?  重庆网站制作公司哪家好,重庆中考招生办官方网站?  建站之星如何实现PC+手机+微信网站五合一建站?  如何在阿里云购买域名并搭建网站?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  定制建站哪家更专业可靠?推荐榜单揭晓  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  如何用低价快速搭建高质量网站?  网站设计制作企业有哪些,抖音官网主页怎么设置?  山东云建站价格为何差异显著?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  建站之星×万网:智能建站系统+自助建站平台一键生成  建站VPS能否同时实现高效与安全翻墙?  如何在IIS中新建站点并配置端口与物理路径?  湖北网站制作公司有哪些,湖北清能集团官网?  如何选择高效响应式自助建站源码系统?  如何选择CMS系统实现快速建站与SEO优化?  如何通过VPS搭建网站快速盈利?  如何在宝塔面板中修改默认建站目录?  c# 服务器GC和工作站GC的区别和设置  哈尔滨网站建设策划,哈尔滨电工证查询网站?  建站主机SSH密钥生成步骤及常见问题解答? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。