2019独角兽企业重金招聘Python工程师标准>>>

之前一直没怎么注意,以为.so文件android为像eclipse一样直接加载,但是直到昨天我在android studio上调试公司项目推送消息的时候,才发现,.so文件原来没有加载成功.

可能之前  Android studio 使用心得(三)---从Eclipse迁移到Android 这篇文章我是用Demo4来做例子,里面并没有引用.so文件,所以大家按照这篇文章去迁移项目的时候,会遇到问题。昨天我网上找了一下关于android studio gradle 加载.so文件的文章,发现大多还停留在gradle 低版本的时候的解决方法,看上去都好复杂,现在android studio1.0以后解决这个问题就很简单啦!如果大家还在用1.0以前的版本那我就要喷你一脸啦。。

我先提一点,就是如果从android studio上直接创建一个项目和从eclipse迁移过来的项目其实目录结构会稍微有区别的。

1.  我先讲一下,怎么解决从eclipse迁移过来的代码加载.so文件.直接以我的项目为例。

先看一下目录结构

大家会注意到,我们从eclipse迁移过来的项目,会默认给我们创建一个文件夹jniLibs,然后把eclipse里面libs文件夹里的内容都复制过来,如果直接在android studio 里面创建项目是不会有这个文件夹的,这是区别一。从eclipse迁移过来的项目上,会在build.gradle配置文件里面加上一段配置

sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
            jniLibs.srcDirs = ['libs']//这一行是没有的,如果我们有.so文件就需要加上这一行代码
        }

// Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

// Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }

再看一下图。之前我一直认为  compile fileTree(dir: 'libs', include: '*.jar')这样就会全部加载.jar和.so文件,其实我错了,如果没有在sourceSets main里面加上一句 jniLibs.srcDirs = ['libs'],是不会加载.so文件的。

2.如果我们创建项目就是在android studio上创建的

默认没有jniLibs文件夹。所以需要我们自己创建。目录  src--->main--->jniLibs

以加载加载信鸽sdk为例子

我们先把.so文件全部复制到jniLibs文件。目录不变,

最后添加成功

然后,再说一下添加.jar包。跟eclipse一样,先把.jar文件放到libs目录下,然后add asLibrary.就可以了。

运行项目,就Ok了。这时也不需要再去配置

jniLibs.srcDirs = ['libs']

转载于:https://my.oschina.net/aibenben/blog/372634

Android studio 使用心得(六)---android studio 如何加载.so文件相关推荐

  1. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 加载 dex 文件 | 将系统的 dexElements 与 应用的 dexElements 合并 | 替换操作 )

    文章目录 一.将系统的 dexElements 与 应用的 dexElements 合并 二.Element[] dexElements 替换操作 三.完整 dex 加载源码 参考博客 : [Andr ...

  2. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 加载 dex 文件 | 使用反射获取方法创建本应用的 dexElements | 各版本创建 dex 数组源码对比 )

    文章目录 一.不同 Android 系统创建 dex 数组源码对比 二.不同 Android 系统创建 dex 数组源码对比 三. Android 5.1 及以下系统反射方法并创建 Element[] ...

  3. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 加载 dex 文件 | 反射获取系统的 Element[] dexElements )

    文章目录 一.dex 文件准备 二.加载 dex 文件流程 三.Element[] dexElements 分析 四.反射获取系统的 Element[] dexElements 参考博客 : [And ...

  4. Android dex修复工具,安卓热修复----手动加载dex文件到设备并执行

    运行环境: MacOS 10.12.6,  Android Studio 3.1.4, 终端工具(iTerms), mumu模拟器. 步骤: 1.新建文本Hello.java,内容如下: public ...

  5. android studio 加载html文件(备忘)

    android studio版本:2021.2.1 例程名称:htmlFile 我做的一个小东西需要一个软件协议之类的,之前直接用textview做,修改起来太麻烦,所以改成加载html文件,即解决了 ...

  6. Android 音视频开发(六) -- Android Mediaprojection 截屏和录屏

    Android 音视频开发(一) – 使用AudioRecord 录制PCM(录音):AudioTrack播放音频 Android 音视频开发(二) – Camera1 实现预览.拍照功能 Andro ...

  7. Android(Java)加载SO文件

    原文地址点击打开链接 一.前言 Android中有时候为了效率以及平台开发库的支持,难免会用到NDK开发,那么都会产生一个so文件,通过native方法进行调用,开发和调用步骤很简单,这里就不多说了, ...

  8. Android 热修复方案Tinker(五) SO补丁加载

    基于Tinker V1.7.5 Android 热修复方案Tinker(一) Application改造 Android 热修复方案Tinker(二) 补丁加载流程 Android 热修复方案Tink ...

  9. Android中apk加固完善篇之内存加载dex方案实现原理(不落地方式加载)

    一.前言 时隔半年,困扰的问题始终是需要解决的,之前也算是没时间弄,今天因为有人在此提起这个问题,那么就不能不解决了,这里写一篇文章记录一下吧.那么是什么问题呢? 就是关于之前的一个话题:Androi ...

最新文章

  1. c语言链表找姓,急啊!!!求救了 C语言编一个链表,输出姓名和学号就好
  2. IJCAI 2019:中国团队录取论文超三成,北大、南大榜上有名
  3. 独家 | 人工神经网络中发现了人类大脑拥有的多模态神经元(附链接)
  4. Keras之DNN::基于Keras(sigmoid+binary_crossentropy+predict_classes)利用DNN实现二分类——DIY二分类数据集预测新数据点
  5. C++_智能指针shared_ptr、unique_ptr、weak_ptr、auto_ptr总结
  6. 华三交换机ping大包命令_cmd如何ping大包
  7. 第二章计算机应用基础试题答案,职中计算机应用基础第二章测试题及答案.doc...
  8. rf扫描枪_RF枪是什么,怎么用,在哪用?
  9. 将数组中的数逆序存放
  10. arcgis符号库匹配不对的原因_ArcGIS符号库自动匹配方法
  11. linewidth方法html,HTML canvas lineWidth用法及代码示例
  12. 33. Pay Gap for the Brightest Female Graduatea 最聪明的大学女毕业生面临的工资差距
  13. 自己写个基金分析系统,准确率也太高了
  14. liuyubobobo:学习方法分享
  15. U8字符串(u8前缀)的作用
  16. 阿里公司将推出债卷,数字巨大
  17. Android神兵利器之黄油刀的使用(ButterKnife)
  18. pixhawk 学习笔记
  19. Spark Mllib里的分布式矩阵(行矩阵、带有行索引的行矩阵、坐标矩阵和块矩阵概念、构成)(图文详解)...
  20. 转载-解释路由包ping的情况

热门文章

  1. LeetCode 2. Add Two Numbers--C++,Python解法--面试算法题
  2. 报错解决:InvalidArgumentError: Received a label value of 101 which is outside the valid range of [0, 101
  3. LeetCode hard 84. Largest Rectangle in Histogram--python,java 15行,c++ 15行 解法
  4. 查询距离两天的数据_一张图就可以管理城建数据?!实景城市三维平台来了
  5. 广东计算机一级考试可以用计算器吗,你考试用不用计算器?
  6. java快速搭建webapi,4.从零搭建WebApi接口开发框架-设计Dao、Service
  7. RabbitMQ(八):SpringBoot 整合 RabbitMQ(三种消息确认机制以及消费端限流)
  8. Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id)等
  9. pygame做一个简单的打字游戏
  10. java 启动 jetty_如何通过命令行启动或者关闭 Jetty 服务器