Android gradle plugin 3.0.0迁移问题

gradle 的版本需要升级4.1+,建议直接用4.3版本
gradle/wrapper/gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

添加 google仓库

gradle plugin 3.0.0+support library 27+开始只放在了google仓库中了,不再jcenter中提供了

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

buildToolsVersion

Android Studio 3.0.0 默认可以不写buildToolsVersion,默认最低可用版本26.0.2
手动修改 buildToolsVersion>=26.0.2

设置了productFlavors的必须设置flavorDimensions

buildType match问题

gradle 依赖的API变更

为了兼容使用gradle 4.3,目前是标记为废弃的,4.3后直接没了
compile -> implementation (for app module)
compile -> api ( for sub module)
provided -> compileOnly
apk-> runtimeOnly

Studio 3.0 minimum

Error:This Gradle plugin requires Studio 3.0 minimum

gradle.properties

android.injected.build.model.only.versioned=3  

aapt2问题

AS3默认使用aapt2处理,如果一些项目使用aapt2有问题,那么可以禁用掉,继续使用原有的aapt。
gradle.properties

android.enableAapt2=false

获取manifest文件路径

修改apk名问题

以前的方式是 output.outputFile = xxxx

Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=normalDebug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.

正确的姿势

android.applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.apk"
    }
}

具体参考:
https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html

你可能感兴趣的:(Android gradle plugin 3.0.0迁移问题)