专栏首页Godot游戏开发引擎介绍和入门MAC上使用Android Studio 3.0的Gradle问题小解

MAC上使用Android Studio 3.0的Gradle问题小解

MAC上使用Android Studio 3.0的Gradle问题小解

2017-06-11 by Liuqingwen | Tags: Android Gradle | Hits

一、问题

Google I/O 大会后发布了最新的 Android Studio 3.0 预览版,其中新版本的新特性中直接支持我很想使用的 Kotlin 语言。今天开始认真学习安卓开发(

),我就打算直接使用 Kotlin 语言在 AS 3.0 中写代码,简洁又高效。

下载了 Mac 版本的 Android Studio 3.0 Canary 3 后,发现新建项目后出现一些构建上的问题,主要是 AS 3.0 预览版构建工具使用的是 4.0 新版本的 Gradle ,在工程项目文件: gradle/wrapper/gradle-wrapper.properties 中可以看到这一行:

distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-milestone-1-all.zip

然后出现几个问题的错误信息包括:

Unable to load class 'org.gradle.internal.event.ListenerBroadcast'
Possible causes for this unexpected error includes:
    Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
    Re-download dependencies and sync project (requires network)
    The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.
    Stop Gradle build processes (requires restart)
    Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.
In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.

还有:

Failed to open zip file.
Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout).
    Re-download dependencies and sync project (requires network)
    Re-download dependencies and sync project (requires network)

这些问题在网上随处可见,一般按照提示都能解决,但是我的不行!另外,在我后来 Windows 10 上使用 AS 3.0 时并没有出现这些 Gradle 相关的问题,构建一切正常!(除了长达一个小时的后台任务外

),所以这些都是和系统上有相关的小问题,在网上 GoogleStackoverflow 搜索后陆续解决。

二、解决方法

不仅仅是上面的构建问题,还有后面陆续出现的 Build 速度慢、 support 包不能用、 Genymotion 模拟器不会连接等等,都需要自己尝试解决,毕竟新手啊!

  • 安装设置 Gradle Home

首先最基本的思路是查看本地 Gradle 是否安装。用过 Linux 系统的朋友很清楚,一个命令行就可以知道: gradle -v 这个命令能查看 Gradle 的版本,我的 Mac 显示 no such command ,所以先安装 Gradle ,参考官网安装指导,我用的 Homebrew :

$ brew install gradle

这样安装好之后,一般 Gradle Home 也设置好了,我写此文的时候 Gradle 在我机器上的版本是 3.5 。

  • 手动下载并手动设置

如果按照上面步骤安装好本地 Gradle 后在 Android Studio 中出现这种错误信息:

Error:(1, 0) Minimum supported Gradle version is 4.0-milestone-1. Current version is 3.5.

说明版本不适配 AS 3.0 中要求的 Gradle 版本,那么可以直接手动安装并解压到 /usr/local/Cellar/gradle/<your-version>/ 下以备用,下载地址直接使用 gradle-wrapper.properties 中描述地地址,记得去掉 \ 符号。

  • 手动设置 Gradle 工作路径

按理来说,下载了相应版本后只要设置 Gradle Home 到新版本的路径就可以了,不过我没有,你可以尝试一下。

我采用的是直接在 Android Studio 3.0 预览版中单独设置 Gradle 的工作路径。在设置中: Android Studio->Preferences...->Build, Execution, Deployment->Gradle 选择 Use local gradle distribution 然后指定 Gradle home 为你下载解压路径。

OK 了,开始写代码吧!不过我还是碰到了一些不爽的问题,就像我上面描述的:Build 速度超慢、 support 包不能正确编译、 Genymotion 模拟器连接不上等。实际上这些都是小问题,但是这会难倒新手。

  • Build 速度、 support 包、 Genymotion 模拟器

解决办法很简单:

1. 改进 Build 速度

根目录 build.gradle 中设置本地仓库和阿里云仓库

mavenLocal()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
maven { url 'https://maven.google.com' }
jcenter()
mavenCentral()

2. 解决 support 包问题

感觉 4.0 的 Gradle 还是变化挺大的,以前的 compile 变成了 implementation ,如果遇到编译期间出现的这个问题:

Error:Failed to resolve: Could not resolve com.android.support:recyclerview-v7:25.4.0. Required by: ......

那么直接在 app 目录下 build.gradle 中相应库引用位置添加注释: //noinspection GradleCompatible

//noinspection GradleCompatible
implementation 'com.android.support:recyclerview-v7:25.4.0'

感觉这是个 Bug ,有时候又能用,奇怪。

另外我还遇到了一个问题: implementation 'com.android.support:appcompat-v7:25.4.0' 还是不能用,不知道为什么,有朋友知道恳请留言指导,谢谢!

3. 模拟器 Genymotion 连接调试

这是个小问题,新手的话有必要提醒一下。如果不能正常连接 Genymotion 的模拟器,需要在模拟器中设置 SDK 为 Android SDK

Settings->ADB 下,选中设置 Use custom Android SDK tools 就可以了。

好了,一切就绪,愉快的 code 吧!

三、总结

Gradle 还是很神奇的,目前它使用的 Groovy 语言,同时 Kotlin 语言版的 Gradle 也在进行中: gradle-script-kotlin ,现在也有预览版可以尝鲜,我也正在尝试使用 Kotlin 版本的 Gradle ,可以参考这篇文章:Using Gradle Script Kotlin for Android ,遗憾的是,还没有成功啊,暂时不折腾了,新手能力有限,慢慢来吧!

好吧,就这些小问题,也是对新手的一个考验,留下纪念。

参考资料: Install a Preview Version of Android Studio: https://developer.android.com/studio/preview/install-preview.html Gradle service version distributions: http://services.gradle.org/distributions/ Gradle Installation: https://gradle.org/install Using Gradle Script Kotlin for Android: https://medium.com/@arturogdg/using-gradle-script-kotlin-for-android-d6cd58c80d60 Android Studio - Error: Failed to resolve: com.android.support.constraint:constraint-layout:1.0.0-alpha1: https://stackoverflow.com/questions/40160968/android-studio-error-failed-to-resolve-com-android-support-constraintconstr Android Studio doesn’t see genymotion : https://stackoverflow.com/questions/27261474/android-studio-doesnt-see-genymotion Gradle 使用 maven 镜像仓库的方法: https://my.oschina.net/abcfy2/blog/783743


PS (2017-08-25) : 更新 Android Studio 从 Alpha 到 Beta 版本出问题: Gradle project refresh failed. 解决办法是 AS 中: Build > Clean Project

Known issue: If you have an existing Android Studio project that’s using an alpha version of Android plugin 3.0.0 (such as 3.0.0-alpha9), you may get the following error when you migrate to Android plugin 3.0.0-beta1 and sync your project: Gradle project refresh failed. Resolve this issue selecting Build > Clean Project from the menu bar—you need to perform this action only once for each project. You can then sync your project files with Gradle by clicking Sync Project from the toolbar. https://androidstudio.googleblog.com/2017/08/android-studio-30-beta-1.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【学习笔记】Unity3D官方游戏教程:Survival Shooter tutorial

    2017-06-25 by Liuqingwen | Tags: Unity3D | Hits

    IT自学不成才
  • Godot3游戏引擎入门之十一:Godot中的粒子系统与射击游戏(上)

    2018-12-23 by Liuqingwen | Tags: Godot | Hits

    IT自学不成才
  • 【翻译】30多个短小而又专业的最佳安卓开发者建议

    2017-08-14 by Liuqingwen | Tags: Android | Hits

    IT自学不成才
  • Gradle 概述

    Gradle 是一个开源的构建自动化(build automation)工具。有关构建自动化的定义请参考:https://en.wikipedia.org/wi...

    HoneyMoose
  • Gradle和Maven性能对比

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    乐百川
  • Gradle 提速:每天为你省下一杯喝咖啡的时间

    作为一名 Android 开发同学,当你的工程和代码达到一定规模的时候,相信你一定遇到过编译速度过慢的问题。比如:

    我就是马云飞
  • 在Eclipse中使用Gradle开发web3j以太坊应用

    在我们的web3j以太坊开发课程中,预置代码是在终端命令行使用gradle进行构建的。如果希望在熟悉的Eclipse中开发web3j以太坊应用,这个快速教程将告...

    笔阁
  • 看似无用,实则重要的Gradle Wrapper

    在本系列的此前文章中,我们学习了为什么要用Gradle、Gradle的入门基础和Groovy的基础,这些文章为Gradle的入门打下了基础,这一篇我们接着学习G...

    用户1269200
  • 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系

    首先用一段通俗易懂但是不是非常专业的话描述一下三者的概念、区别和联系。 Gradle是个构建系统,能够简化你的编译、打包、测试过程。熟悉Java的同学,可以把G...

    用户1221057
  • Android高频面试专题 - 架构篇(一)AS项目架构

    一个project是指一个工作区间,所以一个project可以有多个module,module是模块的意思,每一个module都是可独立运行的程序,而一个pro...

    Android扫地僧

扫码关注云+社区

领取腾讯云代金券