AndroidStudio 问题归纳
前言
整理归纳使用 AndroidStudio 过程中遇到的问题,并记录解决办法。

正文
Error:Could not download protobuf-java.jar (com.google.protobuf:protobuf-java:3.0.0)
老项目导入到最新版本的 AndroidStudio 时,发现无法同步,找不到 protobuf-java.jar 这个包,因为新版本有所改动
解决方案:
我之前只有 jcenter(),需要修改配置
修改一下整个项目的配置 build.gradle
1 | jcenter() { |
报错 error: No resource identifier found for attribute ‘cardCornerRadius’ in package ‘com.xxxxx.xxx’解决
在依赖我自己的 RxTool 下的 RxUI 库时,出现上面这个错误,我反复检查了 res 目录里的文件,最后确定没有缺少资源,查看报错信息如下:

发现有 cardBackgroundColor,cardCornerRadius,cardElevation 三个属性应该与 cardview 有关,然后我发现在 app 下的 build.gradle 文件中没有导入卡片布局 cardview 相应的依赖包。然后我导入相应的依赖包
1 | implementation 'com.android.support:cardview-v7:27.1.1' |
重新 clean project 后报错消失了,一阵狂欢,终于解决了,哈哈。
AAPT: error: - inner element must either be a resource reference or empty。
Logcat 错误日志
1 | AAPT: error: <item> inner element must either be a resource reference or empty。 |
问题出现原因:升级 gradle 插件导致对 values 文件的命名规则更严格,导致原本项目中存在的 values 文件因包含一些不严谨的键值对而报错。
例如:
1 | <item name="about_version_code" type="id">false</item> |
解决方法
修改成:
1 | <item name="about_version_code" type="id" /> |
Android Studio 编译问题 - Error:Could not find org.jetbrains.trove4j:trove4j:20160824
今天早上打开 AS,发现项目编译不通过了。。。提示
1 | Error:Could not find org.jetbrains.trove4j:trove4j:20160824 |
真莫名其妙。。。
查阅资料,提供的解决方式大致有以下几种:
在 buildscript 中加上这个 jcenter()
1
2
3
4
5
6
7
8buildscript {
repositories {
jcenter()// 在这里加
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}但是,一般项目都有这个属性了,仍然是报上面的错。
修改 gradle-wrapper.properties 文件
将 distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
修改为:distributionUrl=http://services.gradle.org/distributions/gradle-4.1-all.zip
有的同志,说这样调整之后,重新编译就通过了。但我的仍然是编译不过。项目 build 文件中 repositories 和 allprojects 括号中加上 mavenCentral()
然后将 jcenter() 改成1
2
3maven{ url'http://maven.aliyun.com/nexus/content/groups/public/' }
maven{ url'http://maven.aliyun.com/nexus/content/repositories/jcenter'}最后是这个样子:
1 | buildscript { |
这样就编译通过了。
总结:个人认为,在 AS 加载(引入)各种包、库的时候,由于网络限制等原因,导致加载失败,这个时候,找个靠谱的第三方库来作为下载来源,才是最有效的。
Android Studio 使用 ButterKnife 生成变量加前缀 m
以前 把 局部变量 改成成员变量的时候可以, 但是现在使用 ButterKnife 并没有在生成变量的时候自动加前缀 m

在 File -> Other Settings -> ButterKnifeZelezny 设置:

Unable to load class ‘org.gradle.api.internal.component.Usage’
今天从 GitHub 上下载一个项目导入 Android studio3.0 后报错,报错如下,详见截图:
1 | Error:(26, 0) Unable to load class 'org.gradle.api.internal.component.Usage'. |

这个 bug 产生的原因就是和 Android studio3.0 有关,因为在 Android studio2.3 的时候还没有这种情况。
解决办法:
把 project 的 build.gradle 里的 classpath ‘com.novoda:bintray-release:0.3.4’改为 0.5.0 版本的就好了。如下图所示:

java.lang.BootstrapMethodError: Exception from call site #3 bootstrap method
在引用 ButterKnife 库时,提示错误:
1 | java.lang.BootstrapMethodError: Exception from call site #3 bootstrap method |
在 butterknife_issues 找到了解决办法
解决方式:在 build.gradle 中添加以下代码 Java8 的新特性
1 | compileOptions{ |
解决 org.gradle.api.tasks.TaskInputs.
greendao 版本过低
在 app 的 gradle 中升级到
1 | implementation 'org.greenrobot:greendao:3.3.0' |
在根 gradle 中设置
1 | dependencies { |
to be continued…