最近需要做安卓项目,所以下了最新的AS3.2版本,还记得我上次用是1.0版本,那个时候啥事没有,结果没想到这次让我处理了好久的错误。(AS直接去官网下载哦!)
错误一:
打开AS,报如下错误:
Plugin Error
Problems found loading plugins:
Plugin "SDK Updater" was not loaded: required plugin "Android Support" is disabled.
Plugin "Android NDK Support" was not loaded: required plugin "Android Support" is disabled.
Plugin "Google App Indexing" was not loaded: required plugin "Android Support" is disabled.
Plugin "Google Cloud Tools For Android Studio" was not loaded: required plugin "Android Support" is disabled.
Plugin "Google Cloud Testing" was not loaded: required plugin "Android Support" is disabled
Plugin "Google Services" was not loaded: required plugin "Android Support" is disabled.
Disable not loaded plugins
Enable Android Support
解决方式:
点击Andorid Studio,Settings,选择Plugins,然后把对应禁用的插件勾上就可以了。
点击OK,会提示restart,重启AS就可以了。
错误二:
找不到SDK
经过一番研究发现,现在下的AS不包含Android SDK,所以需要自己去下载,点击下载。
下载完之后,把一些基本的组件都要下下来,如下。
这时候可能会发现无法下载资源,那是因为谷歌被墙了,
1.修改 hosts 文件
在使用 Android SDK Manager 的时候,主要会连接到两个地址 dl.google.com 和 dl-ssl.google.com,key发现这两个地址都是无法正常访问的,如何解决呢?我们可以通过修改 hosts 文件,将上面的地址定向到能正常访问的 Google 服务器。我们可以使用站长工具的超级 ping 来查找可用IP。
打开地址:http://ping.chinaz.com/,分别测试 dl.google.com 和 dl-ssl.google.com 的IP地址,将获取到的IP写入C:WindowsSystem32driversetchosts文件。
写好后测试是否能正常更新,不行的话,再次测试,再换,总有可以用的IP。
2.使用国内镜像源
先在这里推荐几个:
1.mirrors.neusoft.edu.cn //东软信息学院
2.ubuntu.buct.edu.cn/ubuntu.buct.cn //北京化工大学
3.mirrors.opencas.cn (mirrors.opencas.org/mirrors.opencas.ac.cn) //中国科学院开源协会
4.sdk.gdgshanghai.com 端口:8000 //上海GDG镜像服务器
5.mirrors.dormforce.net //(栋力无限)电子科技大学
使用方法:
启动 Android SDK Manager ,打开主界面,依次选择「Tools」、「Options…」,弹出『Android SDK Manager – Settings』窗口;
在『Android SDK Manager – Settings』窗口中,在「HTTP Proxy Server」和「HTTP Proxy Port」输入框内填入mirrors.neusoft.edu.cn和80,并且选中「Force https://… sources to be fetched using http://…」复选框。设置完成后单击「Close」按钮关闭『Android SDK Manager – Settings』窗口返回到主界面;
依次选择「Packages」、「Reload」。
这样SDK中的API就可以下载了
错误三:
好不容易更新了SDK,然后设置好了自己的SDK目录,我兴冲冲地新建了一个项目(注意项目的API要与你SDK下载的相符合),然后下一步下一步,成功创建,然而此时我并不知道下一个时间节点我要处理一个多么棘手的东西。
等到gradle运行了一阵子,报出了如下的错误(我的没保存,盗一张图)
然后我就去百度啦,发现就是依赖了一些三方的包,由于gradle有离线设置所以无法从远程下载依赖
解决方法最后终于找到了:
File->Settings->Build, Execution, Deployment->Gradle->Uncheck Offline work option.offline mode.
不要选择gradle 离线工作 模式 再试一下就好了。
然后继续报错Could not GET 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.2/gradle-3
即:Could not GET 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.3/gradle-3.1.3.pom'. Received status code 400 from server: Bad Request
Enable Gradle 'offline mode' and sync project
解决方法:
file ->> setting ->> build,excution,->>gradle ->> android studio ->> 勾选enable。。。 如下图所示:
然后再“try again” 就好啦
很多人都用上面的方法解决了错误,但是我依然没有解决,还是Could not GET 'https://dl.google.com/dl/axxxx之类的消息,我又找了很多网页,依然没有找到方法。像什么改项目的HTTP Proxy啊,更改ip地址啊,重新下载gradle包啊,在build.gradle中改什么乱七八糟的,都没用。
正当我我心烦意乱的时候,总算出现了救星。首先,我们在build.gradle中添加几行代码,
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
maven { url "https://jitpack.io" }
如下:
然后升级gradle4.x至更高版本。升级方法:
我在这里改成了4.7版本,当然这时候依然还是报错,后来一篇文章给了我启发,这应该是网络问题,导致以下的包都无法从网上下载:
在此感谢原网址作者的回答,https://blog.csdn.net/csdnfengli/article/details/80695769,简直是神来之笔。
我在依赖自己公司提供的库的时候出现了unable to resolve dependency for app@...... 问题,有可能是网络设置出现问题,我的问题是studio的.gradle文件夹下出现了gradle.properties文本
此文本对比同事文件夹后发先其他人并没有,里面配置了我的studio的全局设置导致我的网络一直走的代理,所以一直访问不到自己的库。解决方法是
注释掉所有内容,然后再设置studio中的设置便能生效。
搞了半天,之前设置的代理竟然害了我,也是让人唏嘘,然后我再次重新try again,成功解决问题!
错误四:
好不容易可以运行新的项目了,结果同学发我一个已有项目,打开之后,提醒我需要update。
不小心手贱了一下,就更新了,更新完了就报错了……当然更新还是要更新的。
于是报错(1)Error:Resource shrinker cannot be used for libraries.
(2)Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
(1)的原因是library中使用了混淆,并移除了无用的资源文件,英文的意思是“library中不要使用移除无用的资源文件字段”,所以解决办法就是到对应的build.gradle中把该library中的shrinkResources字段移除就可以了
(2)的原因就是使用了productFlavors分包,解决方法就是在build.gradle中的defaultConfig中添加一个flavorDimensions "1"就可以了,后面的1一般是跟你的versionCode相同
错误五(或者说是警告):
**Warning:Configuration ‘compile’ is obsolete and has been replaced with ‘implementation’.
It will be removed at the end of 2018**
compile会被在2018年底取消,会被api替代,原来只是警告,今天用发现编译报错直接过不去了。
解决方法:
<code> 将build.gradle(Module.app)中dependencies的compile换成implementation 即可。如下所示:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:22.0.0'
implementation files('libs/Msc.jar')
implementation files('libs/Sunflower.jar')
</code>
关于compile与implementation的区别。
compile:
可以传递依赖引用,编译时间相对来说长久一些
implementation:
不可传递依赖引用,比如,B依赖A,C再依赖B,C却不能依赖A的引用或者依赖。当然他的编译时间就会短一些。
对于api代替compile,他们功能相同。
错误六:
All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 24.2.1, 23.4.0. Examples include com.android.support:animated-vector-drawable:24.2.1 and com.android.support:recyclerview-v7:23.4.0 less... (Ctrl+F1) There are some combinations of libraries, or tools and libraries, that are incompatible, or can lead to bugs. One such incompatibility is compiling with a version of the Android support libraries that is not the latest version (or in particular, a version lower than your targetSdkVersion.)
这个问题的原因是版本不匹配……其实大部分问题都是因为这个,解决方法就是在build.gradle中修改版本,保证编译版本与实际版本一致。
错误七:
Error:Execution failed for task ':app:javaPreCompileDebug'. > 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.-permissionsdispatcher-processor-2.3.1.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.
在project/app/build.gradle的android{defaultConfig{}}中添加:
build.gradle
apply plugin: 'com.android.application'
....
androdi{
defaultConfig{
....
...
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath true
}
}
}
}
错误八:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:compileDebugJavaWithJavac'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63)
atorg.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
…………
比较长的一大段报错,后来在网上找到了一个定位错误的方法,在命令行中进入项目的根目录,或者可以在Android studio的Terminal中直接操作也可以,然后敲入一个命令:
gradlew compileDebug --stacktrace -info
或者:
gradlew compileDebug --stacktrace -debug
我直接用了这个命令,这个显示的错误信息最详细,建议你直接用这个,
gradlew compileDebugSources --stacktrace -info
然后就可以得到比较详细的错误信息:
Resource missing. [HTTP GET: https://jcenter.bintray.com/com/android/tools/build/gradle/3.2.0/gradle-3.2.0.pom]
Resource missing. [HTTP HEAD: https://jcenter.bintray.com/com/android/tools/build/gradle/3.2.0/gradle-3.2.0.jar]
再去build.gradle中一看,发现少了之前的配置代码