本文记录了Android Studio一些坑及解决方案。

一、Error:(1, 0) Illegal char <:> at index

在电脑强制重启,或者系统切换字符集时,AS编译会出现以下错误,这是因为Android Studio在【C:\Users\username.AndroidStudio4.0\system\caches】文件夹中对项目进行缓存,遇到此问题删除该文件夹,然后重新sycn即可。

二、’xxx’ is not a readable directory

现象描述

Android Studio编译Android jni程序时,出现了以下的异常导致编译出错\build\intermediates\compiled_local_resources\debug\out’ is not a readable directory。

解决方案

删除项目根路径下的.gradle文件夹重新编译

三、failed to download Gradle

现象描述

Android Studio在打开Android项目的时候,有时候Android项目使用的Gradle版本和本地存在的Gradle版本不一样,Gradle同步的时候会去下载对应的gradle版本。由于Wall的存在或者电脑无法联网有或者Gradle官方的服务器不稳定,通常会出现”failed to download Gradle”的报错,导致无法编译。这里有以三个解决方案。

解决方案

情况一:可以切换Gradle版本

在项目根路径的build.gradle和gradle/wrapper/gradle-wrapper.properties文件中修改gradle的版本为本地存在的版本。需要注意的是,由于Android Studio使用的Gradle 插件是对原始Gradle 的封装,build.gradle文件显示的版本为android wrapper的版本,gradle-wrapper.properties文件中显示的版本为真正的gradle版本,两者的版本号不相同,并有一定的映射关系,映射关系见https://developer.android.google.cn/studio/releases/gradle-plugin#updating-plugin
// build.gradle文件需要修改的地方
classpath 'com.android.tools.build:gradle:3.6.2'
// gradle/wrapper/gradle-wrapper.properties文件需要修改的地方
distributionUrl=https://services.gradle.org/distributions/gradle-5.6.4-all.zip
而本机存在的gradle版本可以在C:\Users(用户名).gradle\wrapper\dists中找到。

情况二:无法切换Gradle版本

由于Android gradle wrapper升级很快,版本之间又有些不兼容,使用不同的Gradle版本可能导致编译不过,这时,就需要通过一些渠道下载到对于的gradle版本。为了使Android Studio能够在本地找build.gradle中声明的版本进行编译,有以下两种方法。

方法一

将下载后的zip包放在以下路径中,然后重启Android Studio,Android Studio发现本地存在需要的gradle就不会去联网下载了。
C:\Users(用户名).gradle\wrapper\dists\gradle-(Gradle版本号)-all(一个特殊字符串)\

方法二

在Android Studio中点击File->Settings->Build,Execution,Deployment,在Gradle Project中设置Use Gradle from为gradle存放的路径。设置完成后不需要重启Android Studio,直接Sync。
Android Studio常见异常解决方案 - 图1

常用的Gradle版本放在百度云中
链接:https://pan.baidu.com/s/1a8C5_xZz9iFebro73UkKNA
提取码:gf0g