[TOC]
官方指南
依赖指令 implementation api
build.gradle中的依赖默认为implementation,而不是之前的compile
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
api 'com.google.code.gson:gson:2.8.2'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
-
implementation
为新的表示方法,履行 API依赖不会传递
,使用implementation会使编译速度有所增快 -
api
与gradle3.0.0之前的compile指令的效果完全一样,module将会泄露其依赖的module的内容 -
provided
配置的依赖只编译不打包到最终,这个不属于 Android,为jar包打包的模式,故在 APP模式下无法使用
最新版的Gradle plugin需要你指出一个module的接口是否对外暴露其依赖lib的接口。基于此,可以让项目构建时,gradle可以判断哪个需要重新编译。因此,老版本的构建关键字compile被废弃了
provided 与 apk 编译改动
provided改成了compileOnly,apk改成了runtimeOnly
升级到 3.0 gradle 构建遇到的问题和修复方法
Could not find com.android.support:multidex:1.0.1
Could not find com.android.support:multidex:1.0.1.
Searched in the following locations:
原因是 repositories 修改过 需要这么写
buildscript {
repositories {
jcenter()
mavenLocal()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
allprojects {
repositories {
jcenter()
google()
}
}
Error: All flavors must now belong to a named flavor dimension
Error:All flavors must now belong to a named flavor dimension.Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
所有的flavors都必须属于同一个风格
Plugin 3.0.0之后有一种自动匹配消耗库的机制,便于debug variant 自动消耗一个库,然后就是必须要所有的flavor 都属于同一个维度
为了避免flavor 不同产生误差的问题,应该在所有的库模块都使用同一个foo尺寸
解决方案 输出apk
的 build.gradle
里面
android{
defaultConfig {
targetSdkVersion:***
minSdkVersion :***
versionCode:***
versionName :***
//版本名后面添加一句话,意思就是flavor dimension 它的维度就是该版本号
flavorDimensions "versionCode"
}
}
Error: style attribute '@android:attr/windowEnterAnimation' not found
error: style attribute '@android:attr/windowEnterAnimation' not found
....
解决方法 工程根目录
的 gradle.properties
添加
android.enableAapt2=false