1、什么是Module Library
android 将项目 分成 project 和 Module
module 其实也是一个项目 他里面也有 res 、 java 、 AndroidManifiest等文件 其实也是一个可以独立运行的项目
只是 build.gradle中 标记了是library类型的
而 project是
apply plugin: 'com.android.application'
2、module library 导入到自己项目中的意义
如果是将 一个外部的module library想导入到当前的工程作为 library 作为一个, 可以看作是与当前项目的 合并 ,在主项目中可以 直接使用 module library项目中的资源文件等。 总之就等效于 将module library项目中的文件复制到了主项目的对应文件夹中了。
必须明白上面这一点, 这也是 ModuleLibrary 存在的意义
3、将module library 导入到自己项目
1)如果是android studio 的module Library 那么可以直接导入。
注意:但是 由于module Library 使用的gradle版本和当前项目的gradle不一样,那么android studio就会去电脑中找是否有对应的gradle ,如果 没有那么他就去网上下载,但是服务器在国外,国内下载很慢,所以在导入前可以修改一下版。改为自己对应已有的版本。
查看 gradle 的版本 打开当前项目的文件中的gradle文件
用记事本打开上面的 文件看最后一句
https\://services.gradle.org/distributions/gradle-2.8-all.zip 说明版本是 2.8
然后打开要导入的module library的 对应的gradle-wrapper.properties 将版本改为2.8 这样可以导入快一点。
其实从网上下载下来的项目 用自己的android studio 打开前 也可以这么做,这样打开的也会快一点。
2)如果是 android studio 的项目 或者 eclipse的项目 或者eclipse的library项目导入到当前的项目作为 module library那么 步骤如下
(1)新建一个library形式的module,删掉这个module中src/main目录里面的所有文件(包括删掉java、res、AndroidManifest.xml)
(2)复制第三方库的AndroidMainfest.xml、res、src文件(夹)到库目录的src/main目录中
(3)将src/main目录下的src目录重命名(Shift+F6)为java
(4)删除库module中的build.gradle文件(注意不要修改错了地方)中的dependencies和release模块(这一步可以不做)
注意:除了上面三个文件 还有 libs 、assest等等文件对应复制就可以了
如果libs 文件中有.so文件(就是jni) ,android studio 是将jar包和.so文件分开放的,jar包还放在libs中,so文件放在jniLibs中 两种解决方法
方法1、 新建一个 在src/main文件中新建 jniLibs文件夹,将.so文件都拷贝进去
方法2、.so文件还是放在libs中但是,要告诉android studio去哪里找.so文件
修改当前module的build.gradle文件。
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
以上两种方法 结果都是一样的效果一样。
在工程中可以看到多出了jniLibs的文件夹如图
总结:其实.so文件一般都是一些驱动硬件的程序 ,运行起来都是在如下的路径中
运行到手机中的时候 这些.so文件 既不是在libs中也不是在jniLibs中,以上两个都是开发时候看见的路径,实际打包成apk的时候是在lib 文件夹中。
这是监控打印的路径 System.out: so文件的路径::::/data/data/项目名称/lib/XXX.so
所以放在哪里都一样,这要最终android studio 可以找得到并且打包到apk 的 lib中就可以了!
4、将 module library 添加给当前的项目
完成了!
写的不太好只有自己能够看得懂,就当是笔记!