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

 更新时间:2017年09月13日 09:23:00   作者:wulianghuan  
本篇文章主要介绍了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。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • flutter自定义InheritedProvider实现状态管理详解

    flutter自定义InheritedProvider实现状态管理详解

    这篇文章主要为大家介绍了flutter自定义InheritedProvider实现状态管理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Android实例HandlerThread源码分析

    Android实例HandlerThread源码分析

    本篇文章主要给大家通过实例代码分析了Android中HandlerThread的用法以及步骤,需要的朋友参考学习下吧。
    2017-12-12
  • Android开发中父组件调用子组件方法demo

    Android开发中父组件调用子组件方法demo

    这篇文章主要为大家介绍了Android开发中父组件调用子组件方法demo,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • android实现简单底部导航栏

    android实现简单底部导航栏

    这篇文章主要为大家详细介绍了android实现简单底部导航栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • Android自定义view之3D正方体效果实例

    Android自定义view之3D正方体效果实例

    这篇文章主要给大家介绍了关于Android自定义view之3D正方体效果的相关资料,实现的效果非常不错,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • Android编程之自定义ProgressBar示例

    Android编程之自定义ProgressBar示例

    这篇文章主要介绍了Android编程之自定义ProgressBar,结合实例形式分析了Android自定义进度条的布局、功能实现及相关属性设置技巧,需要的朋友可以参考下
    2017-08-08
  • Android 中 onSaveInstanceState()使用方法详解

    Android 中 onSaveInstanceState()使用方法详解

    这篇文章主要介绍了Android 中 onSaveInstanceState()使用方法详解的相关资料,希望通过本文大家能够掌握这部分知识,需要的朋友可以参考下
    2017-09-09
  • Android搜索框SearchView属性和用法详解

    Android搜索框SearchView属性和用法详解

    这篇文章主要为大家详细介绍了Android搜索框SearchView属性和用法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 违章查询源码分享

    违章查询源码分享

    本文主要分享了违章查询源码,特附上源码下载地址和测试安装包下载地址。需要的朋友一起来看下吧
    2016-12-12
  • Android fragment 转场动画创建步骤

    Android fragment 转场动画创建步骤

    在 Android 中,可以使用 setCustomAnimations() 方法来绘制自定义的 Fragment 转场动画,本文分步骤给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-03-03

最新评论