迁移项目的坑

引言

好像从换系统、升级Android studio以后,就发现了很多莫名其妙的错误,其实也不算莫名其妙的错误,就是迁移项目的时候出现的一些常见错误。在这里写一个自己解决的办法,如果以后再次遇到这种情况就先试试这些方法,如果不行再继续寻找解决方案。

关于代理的问题

因为有的区域的局限性,导致一些不可名状的错误。在这里我们需要设置一下代理,并有相关的VPN来解决。

如果遇到下载对应的gradle包(这里指的是在线编译,而不是利用离线包)

类似于这种情况:

1
Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all artifacts for configuration ':classpath'.

如果是这样的情况,我们的解决办法一般有几步:

  1. 找到我们的代理的地方

img

  1. 查看代理

img

  1. 注释或者删除注解

img

给予以上三步,按理说应该是解决了这个问题,如果由于升级AS所导致的一些问题,不如连同下面的步骤一起进行一个操作

如果这样的错误

1
Could not get 'https://dl.google.com···········.pom'

这里得不到资源文件pom多数可能也是代理的问题

  1. 打开seeting

对于macOS系统

1
cmd + ;

调出setting

对于Windows系统来说

1
Ctrl + Alt + s

(如果QQ在线可能导致按键冲突,退出QQ即可)

或者在file->setting

  1. 设置代理

img

这里的Http代理还是Socks代理必须要取决你的VPN的设置

端口号也是一样

一般是HTTP的1081端口(注意!是一般,像我的特殊情况就是不行,我的VPN设置是Socks代理的1081端口,如果是Http代理是8001端口)

  1. 检查代理是否成功

点击Check connection 输入URL:http://www.android.com

img

http://www.google.com

  1. 确认后

若出现:

img

则表示代理成功。

最后进行sync project(在右上角的AVD Manger旁边)

关于在Windows系统下项目调试的问题

img

我在Windows调试的时候,不管是利用真机调试还是模拟器调试都会出现这个问题。我在这里的问题一般有3种解决办法

  • 方法一:修改SDK版本号

根据报错信息,我发现是我的SDK版本号兼容的问题

img

修改SDK版本号即可

在修改之前有必要解释一下compileSdkVersion, minSdkVersion 和 targetSdkVersion

  • compileSdkVersion 代表编译的时候使用的SDK,但这个SDK不会包含在运行的行为中,就是说不会出现在APK中。
  • minSdkVersion代表应用运行的最低SDK标准,这个也是判断用户能否安装这个软件的依据,但这个设置必须要大于你所使用的库的最小SDK,这样你才能够使用他
  • targetSdkVersion代表应用打包出来的版本,这个是代表Android向前兼容的依据,也就是说Android在targetSdkVersion没有改变的时候,应用的行为不会是去适应新的版本。当你设置了最高的SDKVersion的时候,应用就回去适应这个API

所以在设置这个compileSdkVersion的时候,我们应该确保compileSdkVersion不得低于我们的targetSdkVersion。而且我们这个compileSdkVersion建议使用最新的SDK,这样的兼容性更好,在更换SDK的同时,不要忘记进行测试。

所以我们设置compileSdkVersion为30,从而解决了这个Bug

关于某些特殊的原因

1
Caused by: org.gradle.internal.resolve.ModuleVersionResolveException: Could not resolve com.android.tools.build:gradle:3.5.2.

这是由于gradle造成的,我们有以下的问题:

  1. 关于版本的问题

如果是Android studio版本的问题,建议直接在AS中updates来

img

  1. 还是关于代理的问题

当我利用AS的Updates升级之后,发现出现了443

1
Cause: dl.google.com:443 failed to respond

所以我猜测还是代理的问题,上面以及有一种解决办法,但是对于这次来说不能解决这个问题。所以我认为可能是我的代理和gradle.properties文件中的没有吻合,导致AS认为我上不去网络(国内环境使然

所以解决办法是只能利用HTTP代理(不是HTTPS!

所以首先注解掉HTTPS的代理信息

img

并且添加Http的代理信息,这里的端口号根据代理的端口号所决定。

最后成功解决了这个问题

关于查看源代码的问题

在我想查看一些框架或者一些方法的源代码的时候,我碰到了这样的问题:

img

根据提示,我发现我没有安装Android SDK Platform

所以我在SDK manager中下载了

img

最后成功将.class文件转换为了.java文件查看

如果这样没有解决的话:

还可以降低targetSdk版本号,API为30的版本可能没有,降低为29