Gradle版本升级

其实当AS升级到3.0之后,Gradle Plugin和Gradle不升级也是可以继续使用的,但很多新的特性如:Java8支持、新的依赖匹配机制、AAPT2等新功能都无法正常使用。

Gradle Plugin升级到3.0.0及以上,修改project/build.gradle文件:

修改global.gradle(自定义lib管理的gradle)
tools = [gradleTools      : 'com.android.tools.build:gradle:3.0.1'
]修改project/build.gradle文件buildscript {repositories {google()}apply from: 'global.gradle' def tools = rootProject.ext.tools dependencies { classpath tools.gradleTools } }

Gradle升级到4.1及以上,修改project/gradle/gradle-wrapper.properties文件

distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
生成APK文件名属性outputFile变为只读

在app module中修改build.gradle文件之前改apk名字的代码

variant.outputs.each { output ->def outputFile = output.outputFileif (outputFile != null && outputFile.name.endsWith('.apk')) {def fileName = "host_${variant.buildType.name}_${variant.productFlavors[0].name}_${mApplicationId}_${defaultConfig.versionCode}_v${mVersionName}.apk" output.outputFile = new File(outputFile.parent, fileName) } }

由于outputFile属性变为只读,需要进行如下修改,直接对outputFileName属性赋值即可:

variant.outputs.all {outputFileName = "host_${variant.buildType.name}_${variant.productFlavors[0].name}_${mApplicationId}_${defaultConfig.versionCode}_v${mVersionName}.apk" }
依赖关键字的改变
  • api: 对应之前的compile关键字,功能一模一样。会传递依赖,导致gradle编译的时候遍历整颗依赖树
  • implementation: 对应之前的compile,与api类似,关键区别是不会有依赖传递
  • compileOnly: 对应之前的provided,依赖仅用于编译期不会打包进最终的apk中
  • runtimeOnly: 对应之前的’apk’,与上面的compileOnly相反

关于implementation与api的区别,主要在依赖是否会传递上。如:A依赖B,B依赖C,若使用api则A可以引用C,而implementation则不能引用。

这里更推荐用implementation,一是不会间接的暴露引用,清晰知道目前项目的依赖情况;二是可以提高编译时依赖树的查找速度,进而提升编译速度。 渠道需要声明flavor dimensions

刚开始Sync的时候应该会报错:
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

也就是每个flavor渠道都必须归属一个dimension维度,若只有一个维度,渠道中可以不写dimension属性,默认分配到该维度。直接添加一个默认的维度即可,如:flavorDimensions "dimension"

解决方法是在app.gradle添加flavorDimensions

defaultConfig {flavorDimensions  getVersion("VERSION_CODE")
}

也可以像官方文档那样设置多个维度

// Specifies two flavor dimensions.
flavorDimensions "mode", "minApi"
productFlavors {free { // Assigns this product flavor to the "tier" flavor dimension. Specifying // this property is optional if you are using only one dimension. dimension "mode" ... } paid { dimension "mode" ... } minApi23 { dimension "minApi" ... } minApi18 { dimension "minApi" ... } }
库多variant依赖方式的修改

Gradle plugin 3.0.0+之后引入了新的variant自动匹配机制,也就是说app的flavorDebug变体会自动匹配library的flavorDebug变体。

回顾一下旧的方式,如果app在某个variant下需要依赖library相应的类型,需要按照下面的方式声明依赖:

dependencies {hytestCompile project(path: ':main', configuration: 'hytestRelease') productionCompile project(path: ':main', configuration: 'productionRelease') }

新的方式,gradle会自动感知并匹配对应的variant(前提是app与library中有对应的variant类型):

dependencies {implementation project(':main')
}
填坑

1、style attribute ‘@android:attr/windowEnterAnimation’ not found. 这是aapt2导致的,3.0默认启用了aapt2。解决办法:在project的根目录下的gradle.properties最后添加关闭aapt2的代码:

android.enableAapt2=false

2、gradle tool 3.0使用最低SDK buildTool 26.0.2的版本

3、使用了aapt的需要去除掉,改用annotationProcessor

4、注意引用第三方库的时候com.android.support包的版本需要统一,不然在multidex会导致异常或者build的时候无法build success

转载于:https://www.cnblogs.com/fomin/p/8424478.html

gradle tool升级到3.0注意事项相关推荐

  1. AS升级3.0,gradle plugin 升级到3.0.0遇到的问题

    1.Error:Could not get unknown property 'apkVariantData' for object of type com.android.build.gradle. ...

  2. 127.0.0.1 myz.php,附录 – 1.0升级到2.0注意事项 - GatewayWorker 2.x 3.x 手册

    如何知道自己使用的版本是1.0还是2.0 打开文件 GatewayWorker/Gateway.php,查看是否有常量VERSION,并且常量值大于等于2.0.0 class Gateway exte ...

  3. Django从1.8升级到2.0注意事项

    2019独角兽企业重金招聘Python工程师标准>>> 我公司从2015年开发自动化部署平台,当时选用的开发框架是Django1.8版本.这两年多来,基于其上,很好的满足了我们的开发 ...

  4. android编译的tool版本有多少,android gradle tool版本从3.3升级到3.6.3问题记录

    本文记录了项目的gradle tools 从3.3.0版本,升级到3.6.3过程中,遇到的问题,以及如何解决. gradle tool升级步骤: 项目根目录的build.gradle,搜索com.an ...

  5. 小米5怎样升级android,小米5开发版怎么升级Android 7.0?小米5开发版升级Android 7.0教程...

    Android 7.0系统已经陆续推送,今天小米5手机的Android 7.0终于公测了,虽然只限于开发版,但是小伙伴们总算有盼头了!小米5开发版怎么升级Android 7.0?下面小编为大家带来小米 ...

  6. 【ESXi 6.X升级7.X】ESXi 升级 —— 升级前准备工作,注意事项以及示例 — 使用 vSphere Lifecycle Manager升级 ESXi 6.5 到 7.0.3

    目录 1. 升级前的准备工作 1.1 确认 vCenter Server 与 ESXi 的互操作性 1.2 查看 ESXi 是否能直接升级到高版本 1.3 硬件,驱动,固件兼容性确认 2. 升级前的注 ...

  7. Android Studio 升级到3.0后出现编译错误\.gradle\caches\transforms-1\files-1.1\***** 解决办法

    Android Studio 升级到3.0后出现各种编译问题,其中有一个问题是关于资源找不到的问题,百度了半天,也没有相关的文章 C:\Users.gradle\caches\transforms-1 ...

  8. 华为荣耀升级android8,华为荣耀手机升级EMUI8/Android8.0前注意事项

    近期华为以及荣耀的各款热门机型都逐步开启EMUI8/Android8.0系统的升级,其中去年底发布的荣耀畅玩7X以及之前的热门机型荣耀8青春版都已经开启了升级内测申请,有兴趣升级的小伙伴们,可以打开手 ...

  9. Android Studio 升级到3.0后出现编译错误\.gradle\caches\transforms-1\files-1.1\*****-release.aar...

    Android Studio 升级到3.0后出现各种编译问题,其中有一个问题是关于资源找不到的问题,百度了半天,也没有相关的文章 C:\Users.gradle\caches\transforms-1 ...

最新文章

  1. 如何利用 AI 对抗疫情?
  2. mysql+8.0+新特性_MySQL 8.0的一些新特性汇总大全
  3. 使用Ant将windows下开发的Struts2应用直接部署到Linux上
  4. 关闭iOS软键盘的小方法
  5. Lazarus安装使用
  6. [LeetCode] 679. 24 Game(回溯法)
  7. 解决方案:Lua环境搭建
  8. 网络 计算机网络预备知识
  9. java singleton inner class_Java面向对象设计模式-单例模式
  10. eureka集群基于DNS配置方式
  11. cornerstone 加载dicom图像不同分辨率导致图像被截取的问题。
  12. 全球首个用户分享区块链+AI大数据体系,专业跨境医疗机构“海医通”发布XMC“海医链”
  13. 怎么把浏览器改成开发者模式_小米手表怎么玩?Wear OS初体验
  14. 如何判断一个单链表是否有环?
  15. 再读图灵奖得主Brooks 没有银弹 什么是卓越的设计者
  16. 北京卫星地图 百度卫星地图高清版(含道路地名标签叠加)
  17. Android 实现答题器功能(通过手势实现翻页效果)
  18. 杆单元四节点MATLAB,平面四节点等参单元matlab实现
  19. 怎样才能申请办理工作居住证?需要提交哪些材料?
  20. 公务员备考(八) 行测 资料分析

热门文章

  1. mysql sohu_【MySQL中间件之SOHU-DBProxy】
  2. django ajax form表单,Django学习系列之Form表单和ajax(示例代码)
  3. git安装后找不见版本_无法安装最新版本的Gitlab
  4. 160 - 30 cracking4all.1
  5. node oauth2验证_如何设置和使用护照OAuth Facebook身份验证(第2部分)| Node.js
  6. 大数据和云计算涉及的技术_云计算涉及的风险
  7. C和汇编---sizeof运算符和strlen函数
  8. 多叉树的前序遍历_二叉树的非递归遍历的思考
  9. HTML中的function函数命名,请问HTML function函数怎么定义和调用?
  10. 2016_icpc_dalian_onsite