• gradle3.0新命令


    摘抄原文https://mp.weixin.qq.com/s/6UZhaI9cILJiPGYHkXd73g

    No1:

    Implementation

    compile 指令被标注为过时方法,而新增了两个依赖指令,一个是implement 和api,api和以前的compile没区别

    implementation形象的解释一下:比如library里依赖了某个库,主工程依赖了这个library,但是不能使用那个依赖库里的内容。也就是说implementation把库隐藏到library内部了,不给外面的其他工程使用,很好的避免了jar冲突的问题

    No2:

    compileOnly

    等同于provided,只在编译时有效,不会参与打包,不会包含到apk文件中。可以用来解决重复导入库的冲突

    No3:

    自定义插件https://blog.csdn.net/eclipsexys/article/details/50973205有点难

    No4:

    同样的配置下的版本冲突,会自动使用最新版;而不同配置下的版本冲突,gradle同步时会直接报错。可使用exclude、force解决冲突

    No5:

    如果本地同时存在两个不同的jar包,或者本地已有jar包,再去远程依赖不同版本的jar包,就会报错。可以将其中的一个采用compileOnly替换implementation

    No6:

    依赖本地aar包:aar包存放的路径声明和依赖引入是分开的

    repositories {
        flatDir {
            dir "../${project.name}/libs"
        }
    }
    dependencies {  
        implementation(name: 'aar名字', ext: 'aar')  
    } 

    如果aar包有很多,也可以一样象jar包统一添加一个文件夹下的所有包:

    def dir = new File('app/libs')
    dir.traverse(
            nameFilter: ~/.*.aar/
    ) { file ->
        def name = file.getName().replace('.aar', '')
        implementation(name: name, ext: 'aar')
    }

    当其他 Module引用此library的module时,也需要在他的build.gradle中加入如下配置,否则会提示找不到文件:

    repositories {  
        flatDir {  
            dirs 'libs', '../包含aar包的模块名/libs'  
        }  
    }  

    推荐在项目的根build.gradle中统一添加,将所有包含aar包的模块名列出,这样不论是本Module或其他Module都不需要单独配置路径了:

    allprojects {
        repositories {
            jcenter()
            google()
            flatDir {
                 dirs "../moudle-A/libs,../moudle-B/libs,../moudle-C/libs".split(",")
            }
        }
    }

    No7:

    jniLibs目录是so文件默认的放置目录

    No8:

    所有的x86/x86_64/armeabi-v7a/arm64-v8a设备都支持armeabi架构的so文件。所以为了减小包体积,为了减小 apk 体积,可以只保留 armeabi 一个文件夹。但如果你想引入多个平台的,那么需要保持 so 文件的数量一致,就是说 armeabi 文件下的每个so文件都要在armeabi-v7a下找到对应的so文件,但这样apk包的体积就会增大。

    No9:

    如果aar包中的资源文件重复了

    packagingOptions {
        exclude 'META:-INF/LICENSE.txt'
    }

    exclude包含重复文件

    No10:

    如果aar包的清单文件和我们的app清单文件属性冲突时:用tools:replace="属性名"解决。

    欢迎关注我的微信公众号:安卓圈

  • 相关阅读:
    Spring MVC:框架及其组件介绍
    Goods:生成订单
    Goods:我的订单查询分页
    LeetCode:Kth Largest Element in an Array(need update)
    LeetCode:Swap Nodes in Pairs
    Goods:购物车条目加减数量实现
    LeetCode:Sum Root to Leaf Numbers
    Goods:购物车模块之全选按钮与条目之复选按钮的click事件
    Goods:查询某个用户的购物车条目以及添加购物车条目
    洛谷2387 NOI2014魔法森林(LCT维护最小生成树)
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/8927718.html
Copyright © 2020-2023  润新知