之前一直没怎么注意,以为.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']

Android studio 使用心得(六)—android studio 如何加载.so文件的更多相关文章

  1. Android studio 使用心得(四)—android studio 多渠道打包(二)

    Android studio 使用心得(四)—android studio 多渠道打包 这篇文章讲了一种打包方式.是直接在android studio 里面可视化操作,结合配置文件.我个人觉得严格上来 ...

  2. Android studio 使用心得(一)—android studio快速掌握快捷键

    大家都是从eclipse转过来了,所以早就熟悉了eclipse那一套快捷键. File—>settings—>keymap–>选择eclipse就搞定 话是这么说,但是自动化提示的变 ...

  3. cordova程序加载pdf文件的2种方法(ios/android)

    前言 公司目前的前端架构是微信端由vue全家桶负责h5网站的单页应用,android端和ios端则选择cordova打包成apk和app.其中,有一个业务逻辑是点击某个链接进入pdf的展示,h5的方案 ...

  4. Android UI--自定义ListView(实现下拉刷新+加载更多)

    Android UI--自定义ListView(实现下拉刷新+加载更多) 关于实现ListView下拉刷新和加载更多的实现,我想网上一搜就一堆.不过我就没发现比较实用的,要不就是实现起来太复杂,要不就 ...

  5. Visual Studio 2008 Package Load Failure:未能正确加载包“Microsoft.VisualStudio.Xaml”

    在安装好Visual Studio 2008后,启动Visual Studio 2008 发现如下提示: 包加载失败 未能正确加载包“Microsoft.VisualStudio.Xaml”( GUI ...

  6. Android应用安全之外部动态加载DEX文件风险

    1. 外部动态加载DEX文件风险描述 Android 系统提供了一种类加载器DexClassLoader,其可以在运行时动态加载并解释执行包含在JAR或APK文件内的DEX文件.外部动态加载DEX文件 ...

  7. android loadlibrary 更改libPath 路径,指定路径加载.so

    http://www.jianshu.com/p/f751be55d1fb 字数549 阅读177 评论0 喜欢0 需求很简单 ,就是加载指定文件夹下的.so. 原因:android在程序运行的状态下 ...

  8. Android动态加载so文件

    在Android中调用动态库文件(*.so)都是通过jni的方式,而且往往在apk或jar包中调用so文件时,都要将对应so文件打包进apk或jar包,工程目录下图: 以上方式的存在的问题: 1.缺少 ...

  9. Android 如何本地加载pdf文件

    大部分app打开pdf文件是通过intent调起手机中能打开pdf文件的工具,来查看pdf文件,如果需求是,用户在app内下载好pdf文件后,不通过第三方的工具,本地打开. 这样的需求要怎么实现呢?上 ...

随机推荐

  1. 自定义loading dialog --- 后背景透明

    自定义loading dialog --- 后背景透明    <style name="loading_dialog" parent="android:style/ ...

  2. [bzoj1009](HNOI2008)GT考试 (kmp+矩阵快速幂加速递推)

    Description 阿 申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字.他的不吉利数学 A1A2...Am(0&l ...

  3. Xcode 6.4项目中的常见文件(info.plist)

    Xcode 6.4项目中的常见文件(info.plist) 代码中获取 info.plist[NSBundle mainBundle] infoDictionary]; Bundle display ...

  4. 这些年,我们一直追随的.NET

    闲来无事,浏览自己的QQ空间,意外发现自己在13年1月份的发在QQ空间写的一片关于技术的随笔,觉得应该将其移到这里: 这些年,我们一直追随的.NET        前两天,意外地看到了.NET平台为异 ...

  5. 使用BusyBox制作linux根文件系统(CramFS+mdev)

    转:http://www.360doc.com/content/10/0428/11/496343_25245348.shtml 操作系统:Ubuntu9.04 内核版本:linux-2.6.24.7 ...

  6. 从connect到express02-中间件morgan

    控制台输出请求日志 输出格式 默认格式: dev, combined, tiny等 自定义格式: morgan(':method :url :status :res[content-length] - ...

  7. unity GI

    占坑 lightmapper有两种:  Enlighten, Progressive Enlighten: baked GI  静态物体 离线烘焙 precomputed GI 也是适用于静态物体 F ...

  8. http://www.cnblogs.com/zhengyun_ustc/p/55solution2.html

    http://www.cnblogs.com/zhengyun_ustc/p/55solution2.html http://wenku.baidu.com/link?url=P756ZrmasJTK ...

  9. 784 - Maze Exploration

    #include <stdio.h> #include <string.h> char maze[50][100]; void search(int i,int j) { if ...

  10. 30分钟Git命令“从入门到放弃”

    git 现在的火爆程度非同一般,它被广泛地用在大型开源项目中,但是初学者非常容易“从入门到放弃”,各种命令各种参数,天哪,宝宝要吓哭了.实际上新手并不需要了解所有命令的用途,学习是需要一个循序渐进的过 ...