libs 文件夹,打包。
想要在Module模块的
libs文件夹下,
分出几个文件夹出来,这样子
libs\...
\ map-locate
\ share-login
\ video-mayun
更加清晰,更加一目了然,更加好管理
类似于之前Res资源文件夹的打包。
sourceSets {//Android Studio多重显示包名 main {//针对Drawable的'src/main/res/drawable/searchbar/drawable'这句话不管用。需要直接到资源文件夹里管理。 res.srcDirs = [ 'src/main/res-teeeeeeeeeeeeeeeeeeeeeemp-mvp-modules',//模板默认建立【目录】 'src/main/res-common', 'src/main/res-actionbar', 'src/main/res-menubar', 'src/main/res-main', 'src/main/res-login', //省略以下…… ] } }
2.
jni 和 dirs 和 flatDir ,的各种配置
从原来的,
sourceSets.main {//【测试】【测试】【测试】【测试】【测试】【测试】 jni.srcDirs = [] jniLibs.srcDir 'libs' }
repositories { jcenter() mavenCentral() flatDir{ dirs 'libs' }//【测试】【测试】【测试】【测试】【测试】【测试】 }
进化为
sourceSets.main {//【测试】【测试】【测试】【测试】【测试】【测试】 jni.srcDirs = [] jniLibs.srcDirs = ['libs','libs/video-mayun','libs/share-login','libs/map-locate'] }
repositories { jcenter() mavenCentral() flatDir{ dirs = ['libs','libs/video-mayun','libs/share-login','libs/map-locate'] }//【测试】【测试】【测试】【测试】【测试】【测试】 }
这个过程中,会遇到
dir 被推荐为 dirs ,这样的错误
以及 getAt() 什么什么 出错的错误。
那么只要
(1). dir 在合适的时候, 变为 dirs
(2). 由 dir 'xxx' 变为, dirs = [ 'xxx' , 'yyy' , 'zzz' ]
3.compileFileTree 的配置(1)
此时,可能会出现,
包找不到,类找不到,resolve索引找不到 这种情况,
此时,应该检查这个
——————
//系统默认 compile fileTree(include: ['*.jar'], dir : 'libs')
这点很难直接想到,
我是先 搜索 《 android studio libs 分目录 》
https://www.baidu.com/s?wd=android%20studio%20libs%20%E5%88%86%E7%9B%AE%E5%BD%95&rsv_spt=1&rsv_iqid=0xc068505000177b3d&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=10&rsv_sug1=6&rsv_sug7=100&rsv_sug2=0&inputT=12500&rsv_sug4=12500
然后在,
在android studio中重新配置Libs目录
http://blog.csdn.net/panyzyw/article/details/68924523
中的
示范:
- android {
- sourceSets.main {
- //aidl.srcDirs = ['src/main/aidl']
- java.srcDir "src/main/java"
- res.srcDir "src/main/res"
- //disable automatic ndk-build call
- jni.srcDirs = []
- jniLibs.srcDir "src/main/libs"
- manifest.srcFile "src/main/AndroidManifest.xml"
- assets.srcDir "src/main/assets"
- resources.srcDirs = ['src/main/resources/']
- }
- }
- dependencies {
- compile fileTree(dir: 'src/main/libs', include: ['*.jar'])
- }
逐行对比时,才找到灵感的。
然后,又在搜索这个关键词
“ flatDir ”
https://www.baidu.com/s?wd=flatDir&rsv_spt=1&rsv_iqid=0xa9cc15340012ebb0&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_n=2&rsv_sug3=1&rsv_sug2=0&inputT=353&rsv_sug4=354
然后在此网页,
《Android Studio 使用Gradle引入第三方库文件的总结》
http://cache.baiducontent.com/c?m=9d78d513d9971ffc1efa950e5b4d97725e14de6c6691965768d5e0558e34051c1271e3cc76634658c4c50b3b56e95409aaad73296b5637b0ef8ec81d8aa6c16869d3766a2701d016548042f18a5b22c22b9551ecad1d&p=c657d00380934eac58e6de2d0214bb&newp=86759a46d6c806f10be2963d4b5683231610db2151d6d3126b82c825d7331b001c3bbfb423241705d5c47e6201aa495beafb34713d092ba3dda5c91d9fb4c57479cf79&user=baidu&fm=sc&query=flatDir&qid=be217b0c000c13cc&p1=1
找到了很多,发人思考,全面总结的东西:
比如下面,
compile fileTree(include: [ '*.jar' ], dir : 'libs' )
compile files ( 'libs/universal-image-loader-1.8.6-with-sources.jar' )
sourceSets {main {jniLibs.srcDirs = ['libs']}}
settings.gradle下
include ':app' , ':PullToRefresh'
module目录下
build.gradle
compile
project(':PullToRefresh')
小技巧:推荐在项目根目录下新建一个文件夹,如extras文件夹,将所有Library库文件都复制到该文件下,方便统一浏览管理,这样上面两步对应的配置命令将变成:
和
____________________________________
compile project(':qiniu-android-sdk-7.2.0')
____________________________________
repositories {
flatDir {
dirs'libs'
}
}
然后再在dependencies
一栏中添加:
在项目根目录的build.gradle
文件中添加仓库,如:
__________________________________________________
然后再各个Module的build.gradle
配置文件的dependencies
项中添加依赖,格式为‘compile ‘name:version’‘,如:
4.compileFileTree 的配置(2)
此时有可能出现,
Failed to create MD5 hash for file
Android Studio: Failed to create MD5 HashFile
https://stackoverflow.com/questions/43221538/android-studio-failed-to-create-md5-hashfile于是把如下的 dependencies 依赖, 注释掉 :
//compile files('libs/MobCommons-2017.0608.1618.jar') //compile files('libs/MobTools-2017.0608.1618.jar') //compile files('libs/ShareSDK-Core-3.0.0.jar') //compile files('libs/ShareSDK-Facebook-3.0.0.jar') //compile files('libs/AMap_Location_V3.4.1_20170629.jar')
然后,
把原来的
//系统默认 compile fileTree(include: ['*.jar'], dir : 'libs')
拓展为
//系统默认 compile fileTree(include: ['*.jar'], dir : 'libs') compile fileTree(include: ['*.jar'], dir : 'libs/video-mayun') compile fileTree(include: ['*.jar'], dir : 'libs/share-login') compile fileTree(include: ['*.jar'], dir : 'libs/map-locate')
经过测试,
短视频SDK 正常运行,毫无Bug!!! 和以前一模一样 !!!
ShareSDK 正常运行,毫无Bug!!! 和以前一模一样 !!!
说明,这是一次成功而没有隐患的优化 !!!