AndroidStudio如何引入so包

转自:http://blog.csdn.net/aplixy/article/details/51592035

先说前提条件,我的AndroidStudio版本是2.2 Preview 3,版本是2.1的同学应该也是一样的。

然后说结论吧,有些同学可能赶着做项目:

结论:

so包应该放在相应模块(比如app模块)下的src目录下的main目录下的jniLibs目录。

注意是jniLibs,最后边有个s,不是jniLib,并且L要大写。如果你在src/main目录中看不到jniLibs目录,那你只需要自己建一个这个目录就可以了,然后把你的so包按编译平台分类拷贝进去就可以了。然后呢?然后就完了,就这样就可以了,因为系统默认就会去这个目录中找对应的so包。如下图所示:

接下来有兴趣的同学可以了解下为什么是这样。

也许有人说,so包应该跟jar包一样呗,放在对应模块的libs目录下,eclipse就是这样的。有这么简单吗?答案是:NO

原理:

其实在AndroidStudio中,我们之所以可以把jar包放在对应模块的libs目录下,比如app模块(也就是通常意义下的主工程了)的libs目录中,而不需要再去配置build.gradle文件,就可以正常使用这些jar包,是因为在AndroidStudio中新建项目时,系统已经在默认为我们配置好了gradle,如果仔细看模块下的build.gradle文件的话,一般会有这么一句:

dependencies {
    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])}

看到了吧,这句就是告诉gradle,我们的第三方jar包在libs目录下,如果没有这一行配置,那么理论上我们把jar包直接放在libs目录下其实是不行的,只不过新建项目时系统已经为我们配好了。这里libs是个相对路径,因为我们的build.gradle文件本身就在app模块下,那么这里的libs当然也就是指app模块下的libs,其实build.gradle文件中所有的路径都可以写相对路径,我们下边讲的so包的路径也是只写相对路径就可以了。

OK,言归正传,现在知道jar包的引入原理了,那么so包为什么要放在那么奇怪的目录下?能不能放在任意一个自定义的目录呢?当然是可以的。

其实在build.gradle中,默认会有一些这样的配置:

sourceSets {
    main {
        jniLibs.srcDirs = [‘src/main/jniLibs‘]
        aidl.srcDirs = [‘src/main/aidl‘]
    }
}

这些配置在你新建工程之后,在build.gradle文件中默认是没有的,因为默认就是这样的,当然也就不写也可以,当然你写出来也没错。意思是so包就去src/main/jniLibs目录下找,aidl文件默认就到src/main/aidl目录下找。。。当然还有许多其它的配置,你还可以配置你的AndroidManifest.xml文件在哪里,还可以配置你的java代码在哪里,如果你不配的话都会有一个默认值,这里只是以jniLibs和aidl为例而已。

看到这里你应该就明白了,为什么我们把so包直接放到src目录下的main目录下的jinLibs目录就可以了,而不需要配置gradle文件了,因为系统默认就会到这个目录下找,如果你想把so包放在一个你喜欢的地方,比如直接放在app目录下的myJniLibs目录下,那你只需要把上面内容改成:

sourceSets {
    main {
        jniLibs.srcDirs = [‘myJniLibs‘]
        aidl.srcDirs = [‘src/main/aidl‘]
    }
}

这样就可以了。明白了原理,似乎一切都明了了,同理,如果不想把aidl文件放在默认目录下,也可以改aidl.srcDirs的值,如果不想把java代码放在默认目录,就可以改java.srcDirs的值,如果不想把资源文件放在默认目录下,就可以改res.srcDirs的值。。。还有几个,同学们慢慢去研究吧,如果你想把目录结构改的跟eclipse下的工程一样,就改这里的值就可以,不一一细说了。

时间: 2024-08-04 16:52:23

AndroidStudio如何引入so包的相关文章

Maven工程引入jar包(转)

Maven项目引入jar包的方法,希望能帮助有需要的朋友们 法一.手动导入:项目右键—>Build Path—>Configure Build Path—>选中Libraries—>点击Add External Jars—>选中已事先下好的Jar包导入即可. 法二.通过pom.xml文件的Dependencies标签进行添加 打开maven工程的pom.xml文件.我们可以看到下面有7个标签 Overview:显示maven项目的一些基本信息 Dependencies:添加j

【Java_SSM】(四)Eclipse中通过maven引入jar包

这篇博文我们介绍一下如何通过eclipse配置setting并引入jar包 (1)eclipse:Window--Preferences--Maven--User Setting 全部完成后点Apply,点击ok即可. (2)导入所需jar包 此时就该pom.xml文件即可,添加你所需要的jar包 快去开始你的第一个SSM代码吧!

转战Androidstudio之引入jar和so

新迁移的项目之前一直使用百度api来实现一个定位功能,但是迁移到as后发现报错找不到库文件 Couldn't load BaiduMapSDK_v3_2_0_15 from loader 但是明明是存在这个包的啊..郁闷 1.找了一堆的资料先贴一个正常as工程状态下引入so文件的方法: 在"src/main"目录中新建名为"jniLibs"的目录: 2.将so文件复制.粘贴到"jniLibs"目录内. 注:如果没有引用so文件,可能会在程序执行的

Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包

转载博客:http://quicker.iteye.com/blog/2319947 有关MAVEN仓库的理解参见:http://blog.csdn.net/wanghantong/article/details/36427433 MAVEN依赖关系中Scope的作用 Java代码   Dependency Scope 在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署.目前依赖项的作用域<scope>可以使用5个值: 在定义项目的依

Maven工程引入jar包

Maven项目引入jar包的方法,希望能帮助有需要的朋友们 法一.手动导入:项目右键—>Build Path—>Configure Build Path—>选中Libraries—>点击Add External Jars—>选中已事先下好的Jar包导入即可. 法二.通过pom.xml文件的Dependencies标签进行添加 打开maven工程的pom.xml文件.我们可以看到下面有7个标签 Overview:显示maven项目的一些基本信息Dependencies:添加ja

maven的web工程下用pom引入jdbc包,运行时仍显示classnotfoundexception方法

今天在公司培训,做一个简单的servlet程序,需要使用tomcat的web工程. 我先创建maven工程,右键添加web项目属性,于是愉快的开始写servlet,其中有做数据库于是要使用到第三方的jdbc驱动,于是我就用pom.xml引入,引入部分如下: <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version&

Maven 引入外部包

当需要从外部引入一个包(譬如说读写Excel 的POI  jar 包 ), 不需要手动地去官网下载一个包然后粘贴到相应的地方. 只需要把Java 工程 转为 Maven 工程 ( 在工程上右键 > Configure > Convert to Maven Project ), 然后在生成的 pom.xml 中的 Dependence 按 Add 按钮, 则可以在弹出的对话框中搜索想要加入的包 即可(此时查看pom.xml 即可看到已经加入了你想要的包了 <Dependence> .

maven 引入jar包

问题描述:自己的项目需要引入jar包,已知jar包名字,怎么在maven中添加依赖,使其能自动导入? 第一次使用:本文作为记录! 首先,找到maven仓库的网址!如下: http://mvnrepository.com/ 在搜索框输入jar包的名字,比如我需要的jar包为:commons-net-1.4.1.jar 复制 前半部分:commons-net,可以使得搜索范围更广,并且可以找到最新版本~ 搜索结果如下: 从绿色框中点进去,如下: 上图显示了该jar包的相关信息,可以进入进一步查看.

root用户可以引入cx_Oracle包,其他用户不可以导入

1.root用户下,使用源码安装好cx_Oracle包后,root用户下可以引入cx_Oracle包,其他用户下导入失败,提示没有该包:2.import包时,python的搜索路径可以有sys.path命令得出3.一般自己安装的包存放在:/usr/lib64/python2.7/site-packages 目录下4.出现以上问题是cx_Oracle.so文件的权限导致的,该文件只有root用户可读5.chmod 644 cx_Oracle.so 修改文件的权限即可6.安装cx_Oracle时候,