迁移项目的坑
迁移项目的坑
引言
好像从换系统、升级Android studio以后,就发现了很多莫名其妙的错误,其实也不算莫名其妙的错误,就是迁移项目的时候出现的一些常见错误。在这里写一个自己解决的办法,如果以后再次遇到这种情况就先试试这些方法,如果不行再继续寻找解决方案。
关于代理的问题
因为有的区域的局限性,导致一些不可名状的错误。在这里我们需要设置一下代理,并有相关的VPN来解决。
如果遇到下载对应的gradle包(这里指的是在线编译,而不是利用离线包)
类似于这种情况:
1 | Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all artifacts for configuration ':classpath'. |
如果是这样的情况,我们的解决办法一般有几步:
- 找到我们的代理的地方

- 查看代理

- 注释或者删除注解

给予以上三步,按理说应该是解决了这个问题,如果由于升级AS所导致的一些问题,不如连同下面的步骤一起进行一个操作
如果这样的错误
1 | Could not get 'https://dl.google.com···········.pom' |
这里得不到资源文件pom多数可能也是代理的问题
- 打开seeting
对于macOS系统
1 | cmd + ; |
调出setting
对于Windows系统来说
1 | Ctrl + Alt + s |
(如果QQ在线可能导致按键冲突,退出QQ即可)
或者在file->setting
- 设置代理

这里的Http代理还是Socks代理必须要取决你的VPN的设置
端口号也是一样
一般是HTTP的1081端口(注意!是一般,像我的特殊情况就是不行,我的VPN设置是Socks代理的1081端口,如果是Http代理是8001端口)
- 检查代理是否成功
点击Check connection 输入URL:http://www.android.com

- 确认后
若出现:

则表示代理成功。
最后进行sync project(在右上角的AVD Manger旁边)
关于在Windows系统下项目调试的问题

我在Windows调试的时候,不管是利用真机调试还是模拟器调试都会出现这个问题。我在这里的问题一般有3种解决办法
- 方法一:修改SDK版本号
根据报错信息,我发现是我的SDK版本号兼容的问题

修改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造成的,我们有以下的问题:
- 关于版本的问题
如果是Android studio版本的问题,建议直接在AS中updates来

- 还是关于代理的问题
当我利用AS的Updates升级之后,发现出现了443
1 | Cause: dl.google.com:443 failed to respond |
所以我猜测还是代理的问题,上面以及有一种解决办法,但是对于这次来说不能解决这个问题。所以我认为可能是我的代理和gradle.properties文件中的没有吻合,导致AS认为我上不去网络(国内环境使然
所以解决办法是只能利用HTTP代理(不是HTTPS!
所以首先注解掉HTTPS的代理信息

并且添加Http的代理信息,这里的端口号根据代理的端口号所决定。
最后成功解决了这个问题
关于查看源代码的问题
在我想查看一些框架或者一些方法的源代码的时候,我碰到了这样的问题:

根据提示,我发现我没有安装Android SDK Platform
所以我在SDK manager中下载了

最后成功将.class文件转换为了.java文件查看
如果这样没有解决的话:
还可以降低targetSdk版本号,API为30的版本可能没有,降低为29