如何在 build.gradle 中更整洁,更符合逻辑,更高效的书写代码

1.

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

中的
示范:
  1. android {  
  2.     sourceSets.main {  
  3.         //aidl.srcDirs = ['src/main/aidl']  
  4.         java.srcDir "src/main/java"  
  5.         res.srcDir "src/main/res"  
  6.         //disable automatic ndk-build call  
  7.         jni.srcDirs = []  
  8.         jniLibs.srcDir "src/main/libs"  
  9.         manifest.srcFile "src/main/AndroidManifest.xml"  
  10.         assets.srcDir "src/main/assets"  
  11.         resources.srcDirs = ['src/main/resources/']  
  12.     }  
  13. }  
  14.   
  15. dependencies {  
  16.     compile fileTree(dir: 'src/main/libs', include: ['*.jar'])  
  17. }  


逐行对比时,才找到灵感的。






然后,又在搜索这个关键词

“  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.gradlecompile project(':PullToRefresh')


小技巧:推荐在项目根目录下新建一个文件夹,如extras文件夹,将所有Library库文件都复制到该文件下,方便统一浏览管理,这样上面两步对应的配置命令将变成:

include ':app', ':extras:PullToRefresh'

compile project(':extras:PullToRefresh')


____________________________________





compile project(':qiniu-android-sdk-7.2.0')



____________________________________


repositories {

flatDir {

dirs'libs'

}

}

然后再在dependencies一栏中添加:

_compile(name:'qiniu-android-sdk-7.2.0', ext:'aar')
__________________________________________



在项目根目录的build.gradle文件中添加仓库,如:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}


__________________________________________________


然后再各个Module的build.gradle配置文件的dependencies项中添加依赖,格式为‘compile ‘name:version’‘,如:

compile 'com.squareup.okhttp3:okhttp:3.2.0'




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!!!   和以前一模一样  !!!



说明,这是一次成功而没有隐患的优化   !!!









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值