android studio 3.0 跨版本应用内升级问题解决(检查升级只有download按钮,无Update and restart按钮)

AS3.0出来已经好几个月了,但目前正在做项目,使用的是2.2.3版本的,贸然升级更新怕出现莫名的bug,

所以就使用了下3.0预览版(可以和旧版一起使用)感受了下kotlin。现在项目差不多了,决定升级。


家里的电脑很顺利


先把我的预览版文件夹直接删掉,然后应用内升级:
>打开AS,Help菜单>Check For Updates...
>等待检查完成 提示当前版本,最新版本,是否升级>点击Update and restart
>重启后提示初始配置(我用以前版本配置好的)
>构建项目时,提示升级Gradle插件和Gradle版本分别到3.0.1、4.1。还说新的AS会使用默认匹配的Gradle插件版本,我想这里应该是必须要升级的
>升级完成,继续构建,这里报错:说需要buildToolsVersion 26.0.2。老规矩,把项目中的配置改成我现有的25.0.2。但是,哎我去,还是提示我要26.0.2,老办法不管用啊,行吧,点击错误提示的连接下载26.0.2,更改配置
>再来构建,ok搞定。


公司电脑升级时就苦逼了

>打开AS,Help菜单>Check For Updates...
>然后剧情好像跑偏了啊,这个按钮好像不对啊,不是该提示我“Update and restart”吗,怎么只提示我“download”,点击试一下,哎哎哎,这么直接打开浏览器了呀,而且还打不开页面(该死的墙)。

>妈蛋,心想能不能覆盖安装啊? 或者干脆卸载重新下载3.0安装吧,思考再三,又有项目在手,怕出问题,重新配置又麻烦,以我执拗性格不会就此罢休的。
>ok,度娘出马,方案呼之欲出:http://blog.****.net/wuyou1336/article/details/67063722 
>通过下载增量包的形式更新,来吧,搞起,果然顺利出错
>如上面兄弟提到的问题:“无法下载增量包,404错误:因为版本跨度太大,需要分多段下载,具体可参考
https://dl.google.com/android/studio/patches/updates.xml中from标签所指示的版本”,
这里我开始也没注意,但很关键啊,解释下:不是每两个版本之间都有增量包的,我恍惚间想起点什么(我私有的电脑上
原来是2.3.3的,公司的是2.2.3的,难怪不行),于是我根据上面xml中的起始版本发现没有from 2.2.3的。那我就只能曲
线救国了先升级到2.3.3的,再通过Check For Updates...升级到3.0.1。
>于是先查询对应的build number,修改连接地址为https://dl.google.com/android/studio/patches/AI-145.3537739-
162.4069837-patch-win.jar(xml中看不到此起始版本,管它的试一下先,喜出望外,可以下载额)
>成功升级到2.3.3,,以下省略若干步。。。

android studio 3.0 跨版本应用内升级问题解决(检查升级只有download按钮,无Update and restart按钮)



来试一下之前的项目呢,打开AS,打开项目,构建时弹出提示框,说的好像是,3.0打开旧版本时会更改一些配置导致某

些文件丢失,但是在项目地址会生成备份文件projectFilesBackup。
ok,有备份开搞,确定。
顺利报错:

Error:Cannot choose between the following configurations of project :ijkplayer-java:
  - debugApiElements
  - debugRuntimeElements
  - releaseApiElements
  - releaseRuntimeElements
All of them match the consumer attributes:
  - Configuration 'debugApiElements':
      - Found com.android.build.api.attributes.BuildTypeAttr 'debug' but wasn't required.
      - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
      - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
      - Found org.gradle.api.attributes.Usage 'java-api' but wasn't required.
  - Configuration 'debugRuntimeElements':
      - Found com.android.build.api.attributes.BuildTypeAttr 'debug' but wasn't required.
      - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
      - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
      - Found org.gradle.api.attributes.Usage 'java-runtime' but wasn't required.
  - Configuration 'releaseApiElements':
      - Found com.android.build.api.attributes.BuildTypeAttr 'release' but wasn't required.
      - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
      - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
      - Found org.gradle.api.attributes.Usage 'java-api' but wasn't required.
  - Configuration 'releaseRuntimeElements':
      - Found com.android.build.api.attributes.BuildTypeAttr 'release' but wasn't required.
      - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
      - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
      - Found org.gradle.api.attributes.Usage 'java-runtime' but wasn't required.


解决办法在这里:http://blog.****.net/wuqilianga/article/details/78354454
修复上述,继续报错:

没具体看日志,大概是说java8的问题。
项目支持了java8,使用了插件me.tatarka.retrolambda,把插件注释掉,使用AS内置的工具链就好。
在 Project Structure 对话框中将您的源代码和目标代码 兼容性级别更新至 1.8。


java8支持参考:https://juejin.im/entry/59f21217f265da432a7ad17a