android studio升级,Android Studio 升级之旅
Android
Studio 2.3 正式版已经发布,有多少小伙伴第一时间升级自己的 Android Studio了呢?
我猜应该不是很多,因为很多有小伙伴担心升级 AndroidStudio
以后自己的工程就没法编译了,出现一堆莫名其妙的问题.最常见的问题可能有一些两个:
问题一:出现 Unknown verification type [95] in stack map frame 错误Error:Execution failed for task ‘:app:transformClassesWithMultidexlistForNiannianDebug’.
Java.io.IOException:
Can’t read
[E:SVNbroondontrunkcodebroodon_androidappbuildintermediatestransformsjarMergingnianniandebugjars11fcombined.jar]
(Can’t process class [com/tencent/wxop/stat/al.class] (Unknown
verification type [95] in stack map frame))
原因分析:引用的第三方库已经混淆过,再在本地进行编译混淆的时候就会报出这个错误。
解决方案:则修改混淆器,重新进行编译,将新的混淆器覆盖原来的混淆器,则可以解决。
问题二:Error:Execution failed for task ‘:app:transformClassesWithMultidexlistForNiannianDebug’.
proguard.KeepClassSpecification.(ZZZZZZLproguard/ClassSpecification;)V
原因分析:升级 Android studio 以后,使用的混淆器版本不一致
解决方案:根据 Android studio版本选择与之对应的混淆器版本
我们先来捋一捋 Android studio 编译各插件之间的关系:
Android studio 编译需要保证:SDK Build Tools 版本,Gradle 版本,Gradle Plugin 版本 兼容。
这里我们要重点关注Gradle版本的版本 ,因为版本决定了 SDK Build Tools 版本与 Gradle Plugin 版本 。
查看当前 Android studio 使用的Gradle 版本
打开 目录:File ->Setting -> Build、Execution,Deployment -> Gradle ,如图:
如果之前没有修改过Gradle 版本,可以通过下边方法查看,如图:
我采用的 版本为:Gradle-3.4.1
查看 Gradle Plugin 版本
直接上图:
当然还有一个更便捷的方式查看当前工程所使用 Gradle 版本与 Gradle Plugin 版本
打开目录:File -> Project Stucture -> Project , 如图:
重点来了, Gradle 版本与 Gradle Plugin 版本之间的兼容性:
这里我以 Gradle Plugin 2.3.0 以例子,说说Gradle Plugin 、 Gradle 与 SDK Build Tools 三者之间的关系。
写的非常清楚了,Gradle Plugin 2.3.0 依赖 Gradle 3.3 或者以上版本,依赖 SDK Build Tools 25.0.0 及以上版本。
说了这么多,好像还是没说升级 Android Studio 为什么会导致前边提到的两问题,前边提到的两个问题其实多是和混淆相关。细心的小伙伴可能已经发行 Gradle Plugin 2.3.0 使用的新版本的 ProGurd,如图:
问题二的出现其实就是 混淆器的版本与 Gradle Plugin 的版本不一致导致的。
很多小伙伴多手动配置了自己的混淆器,如下:
1,在项目的根目录下创建 proguard 文件夹,在文件下加入 proguard.jar
2, 在project的build.gradle中加入混淆包的关联:
假如你之前使用的混淆器 proguard.jar 的版本是比较低的,现在使用 Gradle Plugin 2.3.0 的话,就会报错,解决方式也非常检查 替换成 Gradle Plugin 2.3.0 对应的 Proguard版本即可。
Proguard 各版本下载地址:https://sourceforge.net/projects/proguard/files/proguard/
至于问题一解决就比较麻烦一点:
问题一出现的原因:引用的第三方库已经混淆过,再在本地进行编译混淆的时候就会报出这个错误。
我们只能通过修改混淆器的源码来解决这个问题。
以 Gradle Plugin 2.3.0 为例
1,首先,下载 Gradle Plugin 2.3.0 至于的混淆器 ProGuard version 5.3.2 ,解压,目录结构如下:
2,找到源码的 ClassConstant.Java 类,在 srcproguardclassfile 文件当中,然后将ATTR_StackMapTable 的值修改成 “dummy”(原值为StackMapTable)。
3,打开SDK所在模块,依次打开:{android-sdk 目录}toolsproguard,复制
ant文件、proguard-android.txt、proguard-android-optimize.txt、proguard-project.txt
文件至ProGuard version 5.3.2 文件夹类。
4,使用ant 进行重新打包
a,安装ant
进入 ant 官网:http://ant.apache.org/ 下载最新版本,并解压至你的硬盘。
b,配置环境变量
window中设置ant环境变量:
配置环境变量:我的电脑 ->属性 -> 高级 -> 环境变量ANT_HOME D:appantapache-ant-1.10.1
path %ANT_HOME%bin;%JAVA_HOME%bin;
classpath %ANT_HOME%lib;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar
c, 验证ant 是否配置成功
依次选择:开始->运行->cmd,输入如下命令:ant
如果出现如下内容,说明安装成功:Buildfile: build.xml does not exist!
Build failed
d, 运行ant打包 proguard
1,cmd 进入 proguard 目录下的 build.xml 所在目录
2, 输入命令 ant 编译
3,在 lib 里面找到 proguard.jar文件,覆盖到 sdk 里面的 proguard 里面的 proguard.jar 包 。
当然有些小伙伴没有配置过自己的混淆器,那 Android Studio 使用的这是默认的 proguard.jar,
路径:{Android Studio 安装目录}gradlem2repositorynetsfproguardproguard-base
4,重启 Android Studio,编译运行,大功告成 。
参考文章欢迎关注本人微信订阅号:“Android 之旅”,每天更新技术博客与行业资讯
android studio升级,Android Studio 升级之旅相关推荐
- 升级Android Studio 导致的 `Error:Failed to notify project evaluation listener.`解决办法
最近升级Android Studio和sdk后, gradle同步项目时忽然报错, Error:Failed to notify project evaluation listener.截图如下, 更 ...
- Android 开发--利用android studio 制作简单文字打怪升级游戏(伪地牢类)1.开始
本人目前是大三考研党,之前有学过一些杂七杂八的知识,但是没有办法利用这些知识制作一些真正有用的东西出来.后来自学了android开发,学会使用了android studio,终于决定利用android ...
- 升级Android Studio到最新版本,升级Gradle到最新,迁移Androidx之路。
随着Android手机的发展,Android系统版本的不断更新,迁移Androidx成了绕不开的步骤.如果是新项目,那 一切好说,但如果是老项目,坑死人不偿命(尤其是中途接手别人的项目的开发). 我是 ...
- Android Studio 2.1.2 升级到 2.2之后,gradle 编译版本更新为2.2.0,databinding报错
2019独角兽企业重金招聘Python工程师标准>>> Gradle sync failed: Could not find com.android.databinding:libr ...
- 从Android studio 2.3.3 升级到 3.1.3最新版本 导入旧项目遇到的诸多错误,终极解决办法!!
如果上天再给我一次机会,我不会将旧项目导入到最新的studio版本.萨瓦迪卡,欢迎大家来到我们美丽的泰国.我们的东西很好吃. 如果你是跟我一样升级完studio版本直接导入的旧项目,连gradle版本 ...
- Eclipse android 项目转android studio填坑之旅
以前公司的老项目,是使用eclipse进行开发的,虽然android studio出来了很久,但为了避免迁移会有一些问题,一直忍着没改,但最近谷歌公司上架有要求,要求android的项目要用andro ...
- android sdk v28,Android Studio Gradle Build失败 – 要求提供不存在的sdk版本
24小时前我的项目完美构建,没有错误.在不更改单个代码的情况下,当我恢复工作时,它将不再构建. 签出旧的工作提交现在会产生相同的错误. 这些是我得到的错误代码: Information:Gradle ...
- 升级Android SDK (API24)笔记
升级Android SDK (API24)笔记 这几天闲着没事,突发奇想地要升级一下电脑中的安卓编程环境. 之前安装的是eclipse环境下的android 4.2.2(18版本),还是几年前我一个读 ...
- 启动AndroidStudio报错Missing essential plugin:org.jetbrains.android Please reinstall Android Studio...
问题 今天升级Android Studio 后,打算重新启动,却发现启动报错如下: Missing essential plugin: org.jetbrains.android Please rei ...
最新文章
- 台式电脑计算机无法启动 启动修复,Win10启动修复无法修复你的电脑解决方法
- Uva592 Island of Logic
- TaskExecutor设计与实现
- python学习笔记(一)——操作符和运算变量
- jquery ajax异步调用
- CAN总线数据帧/标准帧/扩展帧/远程帧/错误帧的组成格式对比
- halcon/c++接口基础 之 析构函数和Halcon算子
- P1768-天路【负环,SPFA,01分数规划,二分答案】
- 区分内边距与外边距padding和margin
- Android编译系统简要介绍和学习计划
- 视频数据训练太慢?试试UT-AustinFAIR提出的多重网格训练,加速4.5倍,还能提点!...
- linux c的内存映像
- “macOS Catalina下TeXstudio内置PDF阅读器无法正常显示中文”的解决办法
- wpf之默认窗口模板研究
- CDN技术详解之系统架构
- 计算机相关期刊阅读,计算机核心期刊.doc
- 校长办公室管理系统c语言,【锦城故事】学软硬结合理论做智慧超群系统是锦城电子的必经之路...
- Package.json文件配置
- Python给excel加密(linux可用版)
- math.h里的数学计算公式介绍
热门文章
- 程序员如何准备好一次面试
- 常用损失函数(一):Focal Loss
- 消息框:服务器正在运行中 OLE解决办法
- 当在Android studio中R文件报红时
- activiti动态办理人_Activiti动态设置办理人扩展
- wegame每次登陆都要滑动验证_wegame一直在验证账号密码【解决方法】
- 天地劫pc版不显示服务器,天地劫幽城再临pc怎么全屏 PC端和手机端是否互通
- python飞船小游戏
- 金蝶EAS·BOS 如何修改解决方案(工程)名称 、工作空间路径
- pymysql.err.OperationalError: (1507, ‘Error in list of partitions to DROP‘)