Android as升级到最新版本存在的问题(gradle升级)

目录: 

           A:as里面gradle的基本了解,以及配置的区别

           B:as and gradle 升级遇到的问题:

           C:个人的一些感悟总结:

A.gradle版本对应:(Plugin version VS  Gradle version)

版本对应图(as最高版本是3.2)

可能在这里有同学就迷惑了,plugin version 跟Gradle verion 都是啥玩意呢.他们分别都在as build prject 的时候做了一些什么事儿呢.以为他们对应的规则.

plugin for gradle version And gradle version 各自的含义

plugin version: 英文给的很直观:插件的版本,这边的插件是指 gradle插件的版本,所以标题才是 plugin for gradle version,gradle的插件版本,这边一般都不会有什么问题,按照上面的图,对应填上就OK.

gradle version: gradle其实就是用Groovy语言(脚本语言)来编写的一个构建工具,用来帮我们构造程序,打包,编译,部署,依赖,签名..等等..(ps:groovy是一个脚步语言,不要把它跟as或者java混在一起,用groovy也可以写android代码...有兴趣的同学,可以去了解一下)

plugin for gradle version  And  gradle version 的总结

Gradle 的每个 Android 插件版本(Android Plugin for Gradle)需要与特定的 Gradle 版本相匹配才能编译成功。为了获得最佳性能,应该使用最新版本的 Gradle 和 Android 插件。

B::as and gradle 升级遇到的问题:

a:首先升级综上所有的gradle  and  plugin for gradle(对应版本号,切记!!!)

gradle version(本项目是3.1.4 as,gradle verison:4.4)
plugin for gradle version(其实这边就是可以理解成你as的版本,按照上图相对应就好)

b:butterknife遇到的问题(version:8.8.1)

升级遇到这个问题 99.9%都是因为butterknife的版本

解决办法:把project.build 里面的dependenceis里面的butterknife的版本号改成8.4.0就OK(下面是解决问题链接,有兴趣多了解一点的朋友可以看看)

Error:Unable to find method 'com.android.build.gradle.api.BaseVariant.getOutputs()Ljava/util/List;' · Issue #1130 · JakeWharton/butterknife · GitHub

c:升级后,gradle给定的一些规则(会对as的编译速度,跟写法有一定的优化,具体的去google了解)

compile 替换 buildToolsVersion 

升级(3.1.4之后不需要写buildToolsVersion,默认是27.0.3)

错误信息(给出的很明白,不过多解释了

d:Unable to resolve dependency for ':app@lintOptions/compileClasspath': Could not resolve project

出现上面的错误一般都是说你的lintOptions放在builTyoes里面了,应该放到androi{}目录下

Gradle配置lintOptions - berber78的专栏 - CSDN博客 想了解lintOptions可以看看这个链接

e:依然是butterknife的问题.

无法获取到LinkApp....Task这个东西,

解决:原因是因为之前用的是8.8.1的butterknife的版本在app.build的里面申请了(如下图),但是咱们改成8.4.0之后就不需要这个apply了,因为在8.4.0的时候apply过去是找不到的.所以才会报错,去掉就OK了.不会影响使用(ps:app.build下implementation butterknife的时候可以是8.8.1.只要在project.build改了就ok)

删除此行,代码正常(skr.skr)

 C:个人的一些感悟总结:

目前我碰到就这些问题,大家有新的问题可以随时沟通我哈.直接留言就好.我会每天都抽时间关注一下的.

我们升级到3.0之后大部分都会把编译版本的sdk也升级的到最高,会存在一些android系统兼容的问题,比如android的8.0安装问题.需要在AndroidManifest.xml中多加入一个权限(如下)

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

以及9.0p版本把javax.crypto.这个api去掉了.如果您项目中用到了,可能会出现一些问题,如果需要找替换办法请google

最近这一份工作让我收获颇多.之后我会陆续发一下大家关注的技术来共同学习一下.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,143评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 13,088评论 2 59
  • 所有Android插件的基本扩展。 你不需要直接使用这个,你可以选择下面几个合适的直接使用 AppExtensio...
    我该忘了我自己w_u阅读 3,465评论 0 5
  • 今天下午我们去报告厅和18级的同学们一起学习唱校歌。到了以后我们发现一位老师已经准备好了一台带有钢琴的电脑,这样的...
    刘誉天爸爸阅读 922评论 0 0
  • 孙小优学校要报足球课。 计划十月一之前就选人就位的,结果第一节自愿试听课三(5)班就去了16名同学,直接逼近年级招...
    糯米肉圆阅读 322评论 0 1