摘抄原文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="属性名"解决。

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

gradle3.0新命令的更多相关文章

  1. Gradle3.0新指令api、provided、implementation等对比

    Android Studio3.0正式版已经出来了,相比2.x的版本,Gradle版本也升级为了3.x,编译速度提高了不少. 在gadle3.0之后,默认的依赖由之前的compile更改为implem ...

  2. IIS7.0 Appcmd 命令详解和定时重启应用池及站点的设置

    IIS7.0 Appcmd 命令详解 废话不说!虽然有配置界面管理器!但是做安装包的时候命令创建是必不可少的!最近使用NSIS制作安装包仔细研究了一下Appcmd的命令,可谓是功能齐全. 上网查了些资 ...

  3. [转]Servlet 3.0 新特性详解

    原文地址:http://blog.csdn.net/xiazdong/article/details/7208316 Servlet 3.0 新特性概览 1.Servlet.Filter.Listen ...

  4. Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性

    Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性 Apache hadoop 项目组最新消息,hadoop3.x以后将会调整方案架构,将Mapreduce 基于内存+io+ ...

  5. android 5.0新特性

    Android Lollipop 面向开发人员的主要功能 Material Design 设计 注重性能 通知 以大屏幕呈现 以文档为中心 连接性能再上一级 高性能图形 音频处理功能更强 摄像头和视频 ...

  6. IIS7.0 Appcmd 命令详解

    原文 IIS7.0 Appcmd 命令详解 一:准备工作 APPcmd.exe 位于 C:\Windows\System32\inetsrv 目录 使用 Cd c:\Windows\System32\ ...

  7. Servlet3.0新特性(从注解配置到websocket编程)

    Servlet3.0的出现是servlet史上最大的变革,其中的许多新特性大大的简化了web应用的开发,为广大劳苦的程序员减轻了压力,提高了web开发的效率.主要新特性有以下几个: 引入注解配置 支持 ...

  8. EF Core 2.0 新特性

    前言 目前 EF Core 的最新版本为 2.0.0-priview1-final,所以本篇文章主要是针对此版本的一些说明. 注意:如果你要在Visual Studio 中使用 .NET Core 2 ...

  9. Django 2.0 新特性 抢先看!

    一.Python兼容性 Django 2.0支持Python3.4.3.5和3.6.Django官方强烈推荐每个系列的最新版本. 最重要的是Django 2.0不再支持Python2! Django ...

随机推荐

  1. 通过设置ie的通过跨域访问数据源,来访问本地服务

    1.首先设置通过域访问数据源 设置通过域访问数据源 2.javascript脚本ajax使用本地服务登录(评价,人证的类似)接口 <html> <head> <scrip ...

  2. 在Ubuntu 15下搭建V/P/N服务器pptpd安装和配置

    在Ubuntu 15下搭建VPN服务器pptpd安装和配置 在ubuntu下配置vpn的方式有很多种,其中比较常见的是pptpd,它配置简单,但是安全性不高,不过对于一般使用来说足够了,我按照程搭建了 ...

  3. java多线程快速入门(二十一)

    CountDownLatch(闭锁)计数器 有一个任务A,它要等待其他4个任务执行完毕之后才执行,此时就可以利用CountDownLatch来实现这种功能 package com.cppdy; imp ...

  4. JSP Filters(过滤器)

    Filter是拦截Request请求的对象:在用户的请求访 问资源前处理ServletRequest以及ServletResponse,它可 用于日志记录.加解密.Session检查.图像文件保护 等 ...

  5. SQLmap注入启发式检测算法

    1.经过setTargetEnv()就进入了checkWaf()的环节 def checkWaf():     """     Reference: http://sec ...

  6. Python随手记—各种方法的使用

    os.popen()方法的使用 os.popen()方法用于从一个命令打开一个管道. 语法:os.popen(command[, mode[, bufsize]])    其中 command是使用的 ...

  7. shell 批量替换内容

    一.查找/data/www/vhosts/WOStest2_YiiFramework/console/sh/下所有.sh文件 把/data/www/vhosts/WOS_YiiFramework 替换 ...

  8. C和C++ 中的const

    C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中.所以,以下代码: #include <iost ...

  9. windows客户端走代理上网

    前提:在大型网络中,由于众多服务器及安全性考虑,内网服务器是不能上外网的,但是为了满足某些服务的需要,一定会搭建代理服务器的. 以下是windows客户端走代理服务器的操作:       两下确定就可 ...

  10. 读C#开发实战1200例子记录-2017年8月14日10:03:55

    C# 语言基础应用,注释 "///"标记不仅仅可以为代码段添加说明,它还有一项更重要的工作,就是用于生成自动文档.自动文档一般用于描述项目,是项目更加清晰直观.在VisualStu ...