Android Gradle 3.0.0 新特性

2017-12-14  本文已影响105人  木猫尾巴

[TOC]

官方指南

https://developer.android.com/studio/preview/features/new-android-plugin-migration.html#new_configurations

依赖指令 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'
}

最新版的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尺寸

解决方案 输出apkbuild.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
上一篇下一篇

猜你喜欢

热点阅读