Gradle3.0.0 新旧项目适配记录一下

Posted 心琼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle3.0.0 新旧项目适配记录一下相关的知识,希望对你有一定的参考价值。

更新Gradle版本

android插件3.0.0需要Gradle版本4.1或更高版本。如果您使用Android Studio 3.0或更高版本打开现有项目,请按照提示自动将现有项目更新为兼容版本的Gradle。

要手动更新Gradle,请将URL编辑gradle-wrapper.properties为以下内容:

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


应用插件


手动修改项目级别build.gradle文件

buildscript {
   repositories {
       jcenter()
       google()
   }
dependencies {
   classpath 'com.android.tools.build:gradle:3.0.0'
}


buildToolsVersion

Android Plugin For Gradle 3.0.0 默认自动添加插件所需要用到的最小版本的编译工具。所以,我们不需要再手动在 build.gradle 添加一行 buildToolsVersion 属性的代码。对于旧的项目,可以去掉这行配置,比如

android {
compileSdkVersion 26
// buildToolsVersion "25.0.2"
...
}

声明味道维度

defaultConfig {
   ......
   flavorDimensions "xinqiong"
   ......
}

each() 和 outputFile()

Plugin 3.0.0 版本移除了一些用于编译配置的 API,其中比较常见的就是 each() 和 outputFile(),两个常用于修改输出 Apk 文件名和路径的方法。(深坑出现)

applicationVariants.all { variant ->
   variant.outputs.all { output ->
       def outputFile = output.outputFile
       if (outputFile != null && outputFile.name.endsWith('.apk')) {
           def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}" + "-${buildTime()}.apk")
           if (variant.buildType.name == "release") {
               variant.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + "/" + project.getName() + "/build/outputs/apk/release")
               outputFileName = fileName
           } else if (variant.buildType.name == "debug") {
               variant.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + "/" + project.getName() + "/build/outputs/apk/debug")
               outputFileName = fileName
           } else if (variant.buildType.name == "debugRelease") {
               variant.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + "/" + project.getName() + "/build/outputs/apk/debugRelease")
               outputFileName = fileName
           }
       }
   }
}

使用新的依赖配置


以上是关于Gradle3.0.0 新旧项目适配记录一下的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 新旧替换一:变量声明

Gradle 3.0.0 的 Proguard 问题

设计模式——适配器模式

FlutterFlutter 全面屏适配 ( 需要适配的情况 | Android 设置最大宽高比 | 使用 SafeArea 进行全面屏适配 | 使用 MediaQuery 进行全面屏适配 )(代码片

iphoneX适配

Gradle 3.0.0-alpha1 与 kotlin-android 插件 1.1.2-3 不兼容? [复制]