本文记录一次 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支持的方法名
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
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 就别用百度。