您的位置:首页 > 移动开发 > Android开发

Android Studio 导入项目和解决常见的错误

2016-01-28 14:14 573 查看
本文记录一次 Android Studio 导入 Github 项目的全过程 (以 LDrawer-master 为例),按照错误的出现顺序,给予解决方案。随着导入的项目不断增多,本文会一直更新。

准备工作

新建一个 AS 的 Project ,创建时按下面的标准选择 SDK :

Minimum SDK: 14

Compile SDK:23 (已有的最高版本)

Target SDK:23 (已有的最高版本)

建议: Minimum SDK < Compile SDK == Target SDK

将里面的配置信息找出来待用。

第一:取出各种版本号

找到 /gradle/wrapper/gradle-wrapper.properties ,取出当前系统已有的 gradle 版本:gradle-2.4-all

找到 /build.gradle 中的 classpath ‘com.android.tools.build:gradle:1.3.0’,取出当然 as 的 gradle 插件的版本号:1.3.0

找到 /app/build.gradle 中的 compileSdkVersion,buildToolsVersion,minSdkVersion,targetSdkVersion 等版本号

我的如下:

buildToolsVersion “23.0.2”

minSdkVersion:14

compileSdkVersion:23

targetSdkVersion:23

备用

第二:取出你的gradle支持的方法名

取出 /app/build.gradle 中的下面代码:

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}
}


取出你的gradle调动中央仓库方法名

buildscript {
repositories {
jcenter()
}
}


备用

开始导入

Eclipse是将项目导入到事先创建好的工作空间,而AS导入时候直接将当前目录作为它的工作空间,所以导入前应该备份。

导入方法

打开 AS -> 选择 (Import project(Eclipse ADT, Gradle etc))-> 选择目录

导入后,gradle 自动进行编译,报出一大堆错误,下面就开始解决问题了

解决问题

第一个问题

Could not find com.android.tools.build:gradle:0.11.2



是什么?

AS 无法找到对应版本的 Gradle 插件

为什么?

首先得知道Gradle插件和Gradle是不同的东西,前者是安装在 Android Studio 上的插件(如: GsonFormat、ButterKnife Zelezny 等)用来连接系统中的 Gradle;后者是安装在系统中的 Gradle,是一个构建工具,被用来编译、构建 Android 项目。

Gradle 插件和 Gradle 相当于 ADT 和 SDK 。AS 在执行编译时,第一步就是用插件连接 Gradle,所以会检查的插件是否存在。

怎么做?

将之前准备好的 ‘com.android.tools.build:gradle:0.12.2’ 替换 /build.gradle 中的 classpath 值。

完成后,按 Ctrl+F9 重新构建

第二个问题

Error:failed to find Build Tools revision 20.0.0



是什么?

Gradle 无法找到对应版本的编译工具 (Build Tools)

为什么?

每个 SDK 版本都有对应的编译工具,最好跟 compileSdkVersion 对应。可以打开 SDK Mananger 查看所有安装的编译工具:



怎么做?

将之前准备好的 buildToolsVersion “23.0.2” 替换 /app/build.gradle 中的 buildToolsVersion 值。

注意:所有的 Module 都要改

不建议直接点图中的“Install Build Tools 20.0.0 and sync project”,会下载插件,得花不少时间。

当然如果你时间充裕,那还是下载一下吧。以后再导入这个版本的项目,就轻松一些。

完成后,按 Ctrl+F9 重新构建

第三个问题

The project is using an unsupported version of the Android Gradle

plug-in (0.12.2). The recommended version is 1.3.0.



是什么?

你选择的 Gradle 插件的不能连接这个版本的 Gradle

为什么?

新的 Gradle 要使用新的 Gradle 插件来连接

怎么做?

点击错误提示中的 Fix plugin version and sync project ,下载一个最新版本

完成后,按 Ctrl+F9 重新构建

第四个问题

Error:Unable to load class

‘org.codehaus.groovy.runtime.StringGroovyMethods’.



是什么?

无法加载 ‘org.codehaus.groovy.runtime.StringGroovyMethods’. 类

为什么?

因为刚才已经把插件版本改成 1.3.0 了,但是没有修改 Gradle 的版本(/gradle/wrapper/gradle-wrapper.properties),里面的版本还是gradle-1.12-all

怎么做?

把这个版本号改成刚才准备好的版本号:gradle-2.4-all



完成后,按 Ctrl+F9 重新构建

第五个问题

Error:(16, 0) Gradle DSL method not found: ‘runProguard()’



是什么?

Gradle DSL 解释器没有找到 runProguard 方法

为什么?

很简单,runProguard 方法是旧版本的 gradle ,新版本改成 minifyEnabled

怎么做?

修改 /app/build.gradle 文件的 android->buildTypes->release (或debug)->修改 runProguard 为 minifyEnabled

注意:所有的Module都要改

完成后,按 Ctrl+F9 重新构建

第六个问题

Error:Library projects cannot set applicationId. applicationId is set

to ‘com.ikimuhendis.ldrawer’ in default config.



是什么?

类库工程不能被设置 applicationId, applicationId 已经被设置在 ‘com.ikimuhendis.ldrawer’ 工程的默认配置里

为什么?

这个原因,我也不是很清楚,我猜测旧版本 Gradle 的 applicationId 可以设置多次,而新版本的 Gradle 只能在一个 Application Module 中设置。

具体请看:StackOverflow

怎么做?

删除库 Module/build.gradle 中的 defaultConfig->applicationId即可

完成后,按 Ctrl+F9 重新构建

待完善…

最后

关于搜索

这几个错误折腾了我很久,百度真不靠谱。百度搜点娱乐八卦还行,搜技术不行。能用 Google 就别用百度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: