Android studio 项目从老版本迁移到新版本遇到的问题,以及解决方案_gcn_keyword的博客-程序员ITS304

技术标签: 项目迁移  Android 笔记  

记录一下我的项目从studio2.0迁移到3.1.2上遇到的问题。希望对你提供帮助。

更新步骤

第一步:更新 gradle
将 gradle 更新到指定的版本,我用的是4.4.(gradle插件版本也要一并更新,对应表请自行查阅)
这里写图片描述
第二步:
将项目的 compileSdkVersion 以及 buildToolsVersion 以及依赖库的 ‘com.android.support’ 相关包更新到同一个版本。我的是27.

//编译
compileSdkVersion 27
buildToolsVersion '27.0.3'
//依赖库
implementation 'com.android.support:design:27.1.0'
implementation 'com.android.support:support-v4:27.1.0'
implementation 'com.android.support:recyclerview-v7:27.1.0'

第三部:
将依赖库引入 compile 全部改为 implementation
改完之后,同步一下工程,当然,我的开始迁移的步骤不是这样的,这里只是针对整个修改的过程,主要还是下面的问题以及解决办法

问题及解决办法

问题一:Process 'command 'E:\Android\Android-Studio-New\sdk\build-tools\27.0.3\aapt.

一般一开始就是这个问题,这个问题主要是依赖包的版本,以及compileSdkVersion、buildToolVersion版本不一致,调成一致后,如果还要问题,可以参考这个博客,看是否能帮助到你,
我改完后,就出现了问题二。

问题二:AAPT2 error: check logs for details

关于这个问题,我也折腾了很久,网上有各种做法,只是对于我没有作用,下面是网上的做法在gradle的properties文件下加一行android.enableAapt2=false
我添加这一行后,有出现了其他的问题,于是我就没有添加,而是编的具体错误。也就是问题三

问题三:类似C:/Users/key_word/.gradle/caches/transforms-1/files-1.1/appcompat-v7-27.1.0.aar/2b92a2dd09209c4e79a93a8d5cd09cf4/res/values/values.xml error: style attribute '@android:attr/windowEnterAnimation' not found. error: style attribute '@android:attr/windowExitAnimation' not found.

可以看到这个问题是styles资源文件出的问题。打开style.xml文件,找到错误中提到的@android:attr/windowEnterAnimation这种类似错误,我在新版本中添加了一个来试了下,发现新版本中资源的引用名称方式变了,没有了前面的@符号,问题解决办法就是把所有的资源错误的引用全部改掉,重新编译。到这里几乎就可以编译过了,只是会出现一些程序上的问题。

问题四:Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to contain annotation processor. Please add them to the annotationProcessor configuration. - butterknife-6.0.0.jar (butterknife-6.0.0.jar) Alternatively, set android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true to continue with previous behavior. Note that this option is deprecated and will be removed in the future. See https://developer.android.com/r/tools/annotation-processor-error-message.html for more details.

我这里也是参考感谢这位博主 我用的是第二种方式,不过一定要注意,implementation 和annotationProcessor 都不能少
implementation files('libs/butterknife-6.0.0.jar') annotationProcessor files('libs/butterknife-6.0.0.jar')

问题五:第三方jar包初始化错误,如:universal-image-loader ,XUtils 等

仔细查找了下,有两种解决办法
第一:如果你的buid配置文件中,设置了multiDexEnabled true,那么自定义的application不能继承Application了,而是继承MultiDexApplication
第二种:如果没有设置multiDexEnabled true 或者设置位false的时候,则需继承Application

最后,到这里,几乎就没有啥问题了,就是一些新sdk和api的问题,相信google可以帮你解决。下面是我的几个小问题

  1. 程序包org.apache.http.client.entity不存在 解决办法:在buildToolVersion 和 defaultConfig 之间加入一行
    useLibrary 'org.apache.http.legacy'
  2. 错误: 找不到符号 符号: 方法 sqrt(float) 位置: 类 FloatMath 解决办法:改为 (float)Math.sqrt()
  3. 错误: 找不到符号 符号: 类 KeyEventCompat 位置: 程序包 android.support.v4.view 解决方法:KeyEventCompat 已经被取消了,hasNoModifiers方法已被KeyEvent实现了
if (KeyEventCompat.hasNoModifiers(event)) {
    handled = arrowScroll(FOCUS_FORWARD);
} else if (KeyEventCompat.hasModifiers(event, KeyEvent.META_SHIFT_ON)) {
    handled = arrowScroll(FOCUS_BACKWARD);
}
改成:
if (event.hasNoModifiers()) {
    handled = arrowScroll(FOCUS_FORWARD);
} else if (event.hasModifiers(KeyEvent.META_SHIFT_ON)) {
    handled = arrowScroll(FOCUS_BACKWARD);
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gcn1184712235/article/details/81475483

智能推荐

android openfire 和 xmpp_weixin_30876945的博客-程序员ITS304

关于xmpp协议可以参考:http://www.jabbercn.org什么是OpenFireOpenfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议。  您可以使用它轻易的构建高效率的即时通信服务器。Openfire安装和使用都非常简单,并利用Web进行管理。单台服务器可支持上万并发用户。由于是采用开放的XMPP协议,您可以使用各种支...

mysql的rowscn_Oracle ORA_ROWSCN_weixin_39559804的博客-程序员ITS304

今天看到一篇关于ORA_ROWSCN的文章,虽然简短,没有什么实例,但是已经把ORA_ROWSCN大概是怎么回事介绍清楚了。记录一下。=================================================================================默认的情况下,每个块中所有的记录的ORA_ROWSCN都是相同的,当块中任意一条记录发生改变的情况下,块...

Jenkins漏洞 && MySQL漏洞 && PHPadmin漏洞_CN_SHzhaoyujie的博客-程序员ITS304

文章目录Jenkins漏洞防护MySQL漏洞搭建CVE-2012-2122漏洞环境复现漏洞MySQL的弱密码破解NmapHydraMySQL注入利用sqlmap防护phpmyadmin漏洞通过general log获取webshell防护Jenkins漏洞Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作.JenkinsMiner加密货币挖矿软件攻...

使用nexus搭建一个docker私服_huan_1993的博客-程序员ITS304

使用nexus搭建docker私服一、需求:二、实现步骤1、编写`docker-compose`文件,实现`nexus`的部署2、修改/usr/lib/systemd/system/docker.service 配置文件3、访问 `nexus`创建一个 `docker`仓库> docker仓库类型1、此处我们简单演示一个 `hosted` 类型的仓库a)、创建一个 Blob Stores,用...

vant-ui框架的一个bug(切换后onload不触发)_赋予不予的博客-程序员ITS304

前几天做的项目里有用到下拉刷新。使用了vant-ui里的List 列表瀑布流滚动加载,用于控制长列表的展示先说使用 1.用npm下载该模块包npm i vant -S2.引入组件官方提供了三种方法。(我使用了第三种,全局引入方法)方式一. 使用 babel-plugin-import (推荐)babel-plugin-import 是一款 babel 插件,它会...

hadoop 命令执行报错解决_雪水的博客-程序员ITS304

ls: Failed on local exception: java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any

随便推点

在IDEA中对vue项目第一次导入需要的操作_程序媛小白白的博客-程序员ITS304_idea导入vue项目

在IDEA中对vue项目第一次导入需要的操作在IDEA中对vue项目第一次导入需要的操作刚开始接触Vue的小白,在第一次用IDEA导入Vue项目时遇到了一些问题,成功导入后整理了一下我个人成功操作的步骤,小白的文章仅供参考第一步:open项目,不要用import第二步:点击file,settings(我这里用的是中文版的,就点击文件,设置就行第三步:进入settings(设置)之后选择plugins(插件),搜索Vue,点击install或者安装第四步:搭建node.js环境.node.j

Cesium (四) 3D模型_GISEarth的博客-程序员ITS304_cesium 支持哪些格式

3D模型我们可以转换、加载并且在Cesium中使用3D模型。Cesium支持glTF(一个新兴的Web 3D模型工业标准)格式的3D模型,并且提供在线的 COLLADA - glTF转换工具。Cesium针对3D模型支持关键帧动画、皮肤、单独节点选取等特性。Cesium自带了三个模型:飞机、车辆、人。下面的例子载入一个车辆模型:var scene = viewer.scen

访问控制权限详解_suwu150的博客-程序员ITS304

访问控制权限面向对象的基本思想之一是封装 实现细节 并且公开方法。Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而只向使用者暴露方法,但隐藏实现细节。访问控制分4种级别。访问级别 访问控制修饰符同类同包子类 不同的包公开级别public 受保护 protected 默认 没有访问控制 私有 private成员变量、成员方法和构造方法(构造器)可以处于4个访问级别中的一个 顶层类只可以处于公开或默认访问级别;注意:p

ORM 框架简介_weixin_30258901的博客-程序员ITS304

对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无...

【JVM】JVM加载class文件的原理机制_FAIRY哦的博客-程序员ITS304_jvm加载类文件原理机制

一、JVM简介JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java语言的一个非常重要的特点就是与平台的 无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,J...

推荐文章

热门文章

相关标签