命令行

很多做 Android 开发不久的同学,习惯于使用图形界面,对命令行操作很陌生甚至恐惧。遇到 AS 运行错误,束手无策。
AS 为了确保易用性,也在 UI 界面上屏蔽了很多命令行运行的细节,导致很多人觉得 AS 难用。
这种情况,我在解决用户集成使用 Bugtags SDK 的问题的时候,经常能遇到。其实 GUI 界面的操作,绝大部分情况下,也是基于命令工具的。如果你习惯了命令行,你会爱上它的,因为它简单、直接,深入。

典型错误

AS 刚推出的时候,stackoverflow 上询问最多的问题,便是进入项目的时候,一直处于:

Gradle: resolve dependancies '_debugCompile'

状态,一直无法前进,到底 IDE 在做什么呢?看不出来。

一句命令行

当用户遇到问题时,我最常提醒用户使用的是在项目根目录下,运行如命令行:

mac:
./gradlew clean build --info > bugtags.log
windows:
gradlew.bat clean build --info > bugtags.log

这个命令行的意思,是运行 clean 和 build 两个 gradle task,并且打开 info 参数使得输出更多的信息,最终把所有输出的信息,输出到项目根目录下的 bugtags.log 文件。用户把这个文件发给我,我根据这个输出文件,通常就能分析出问题所在。
假设命令行去除重定向输指令:

./gradlew clean build --info

信息将会输出在控制台,刚才提到的那个典型错误,可能是这样的:

其实是在下载一个比较大的文件,不用惊慌,你要做的就是 just wait! 至于是在下载什么。我想在下一篇详细描述。
如果你对基本的命令行知识有所了解,前面就已经足够了,如果你想了解更多,请继续。

扩展

在哪运行

当我给出这个命令的时候,最常见的问题,就是在哪运行。答案是控制台(Terminal)。

控制台

在 mac 下,有 terminal(bash/zsh 等),在 windows 下,则是 powershell 或者 cmd。
关键一点:

├── gradlew
├── gradlew.bat

AS 在使用 Gradle 的时候,为了灵活,或者为了应对 Gradle 系统的快速迭代,推荐使用在项目根目录中放置 Gradle 的 wrapper:gradlew 来实现对不同版本的使用。
因此,在控制台运行命令,主要是跟 gradlew 打交道。这个 wrapper,在 mac 下是一个具有执行权限的文件:gradlew,在 windows 下,是一个批处理文件:gradlew.bat
通常,mac 下在当前目录下运行可执行文件是这样:

./gradlew xxx

windows 下在当前目录下运行批处理文件是这样:

gradlew.bat xxx

Terminal 插件

AS(Intellij IDEA)已经做了一个很实用的插件:

点击 Terminal,AS 会帮你完成下面的操作:

  • 模拟打开 terminal
  • cd 到当前项目根目录下

    快速定位文件夹

    IDE 还支持将项目中的某个文件夹拖放到 Terminal 窗口中实现快速定位到这个文件夹:

    使用 help

    要知道都有哪些 gradle 命令运行的参数,可以使用:

    $ ./gradlew --help
    USAGE: gradlew [option...] [task...]
    ...
    

    来获取。下面列举几个重要的参数。

    build 某个指定 module

    AS 推荐的结构是 multiple project 结构,即一个 project 下,管理多个 module,如果每次都要 build 全部的 project 的话,有点浪费时间,则可以使用 -p module 参数,其中 module 是你要 build 的 module:

    $ ./gradlew -p app clean build
    

    明确指定不执行某个 task

    Gradle 的命令存在依赖,例如 build task,是依赖于一系列的其他的 task,如果想要指定不执行某个 task,则可以使用 -x task 参数,其中 task 是要忽略的那个,这个参数可以传递多次。

    $ ./gradlew build -x test -x lint
    

    总结

    Gradle 的命令行还有很多其他技巧,上面只是列举到了本人日常用到最多的几个。有兴趣可以留言深入讨论。

    参考资料

    mac-terminal
    windows-terminal
    有问题?在文章下留言或者加 qq 群:453503476,希望能帮到你。
    想要及时收到最新博客文章,请关注:
    『mobdev』微信公众号二维码

转载于:https://www.cnblogs.com/Bugtags2015/p/5571133.html

Android Gradle 技巧之二: 最爱命令行相关推荐

  1. Homebrew进阶使用教程(二)-用一个命令行天气客户端构建自己的仓库

    [homebrew 系列文章] HomeBrew常规使用教程 Homebrew进阶使用教程(一) Homebrew进阶使用教程(二)-用一个命令行天气客户端构建自己的仓库 Homebrew进阶使用教程 ...

  2. NASM学习(二)——从命令行获取参数

    NASM学习(二)--从命令行获取参数 学习汇编的目的是增强自己对硬件体系的熟悉与编译.链接等等阶段的熟悉 上文我们已经学会了怎么使用NASM来打印HELLO,WORLD了,总结一下,主要是使用系统调 ...

  3. 轻松学习Ionic (二) 为Android项目集成Crosswalk(更新官方命令行工具)

    现在集成crosswalk不用这么麻烦了!官方的命令行工具已经能让我们一步到位,省去很多工作,只需在cmd中进入项目所在目录(不能有中文目录,还得FQ),执行: [html] view plain c ...

  4. 【Flutter】创建 Flutter 项目 ( Android Studio 创建并运行 Flutter 应用 | 命令行创建并运行 Flutter 应用 | 运行 Flutter 应用三种方式 )

    文章目录 一.Android Studio 中创建 Flutter 项目 二.命令行创建 Flutter 项目 三.通过命令行方式运行 Flutter 项目 四.通过 Android Studio 可 ...

  5. 第五十二课、命令行参数的应用------------------狄泰软件学院

    一.主窗口的状态参数 1.主窗口的状态参数 (1).应用程序必须保存和恢复主窗口的状态参数(位置.大小等) 2.应用程序退出的过程 (1).收到关闭事件 (2).执行关闭事件处理函数 (3).主窗口从 ...

  6. [APP] Android 开发笔记 001-环境搭建与命令行创建项目

    1. 安装JDK,SDK JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html Android SDK http ...

  7. Android配置模拟器参数,夜神模拟器支持命令行参数列表

    Nox目前支持的命令行参数(支持3.0版本模拟器以及更高版本模拟器) Nox.exe -clone:                                                   ...

  8. pytest十二:cmd命令行参数

    命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在 cmd 执行"pytest -html=report.html",这里面的"-html=report.ht ...

  9. HDFS 系列二:HFDS 命令行操作

    文章目录 2. HFDS 命令行操作 2.1 基本语法 2.2 参数大全 2.3 常用命令实操 2.3.1 -help:输出这个命令参数 2.3.2 -ls: 显示目录信息 2.3.3 -mkdir: ...

最新文章

  1. 用户 NT AUTHORITY\NETWORK SERVICE 登录失败解决方法
  2. ES6系列之Set Map
  3. jsonp模拟获取百度搜索相关词汇
  4. 有重复数字的组合问题_带数字重复的组合和问题
  5. binlog和redo log的区别
  6. caffe MNIST官方文档中文版
  7. 【资料】机器学习笔记的github镜像下载(github个人star数量排名175)
  8. 通过zabbix_sender实现批量传递key值
  9. 如何在 Linux 中找到你的 公网IP 地址
  10. 【c++】【多线程】单例模式及其性能
  11. 数字电路时钟无毛刺切换
  12. [附源码]Python计算机毕业设计城市旅游景点门票订购系统
  13. 美通社企业新闻汇总 | 2019.2.12 | 世界首家《VOGUE》旗下婚纱店开业;猎聘推出2019“求贤季”大型招聘活动...
  14. 探秘双“11”征服马云刘强东的电商架构 !
  15. WCF各种banding支持的类型
  16. 步进电机转速与脉冲频率的关系
  17. 微信小程序之流星雨个人页
  18. PhotoZoom Pro—图片“无损”放大
  19. Java iText5.5.1 绘制PDF表格
  20. 输出的1~100的奇数的解法

热门文章

  1. 【akka】Akka源码分析-local-DeathWatch
  2. xcode will continue when iPhone is finished iPhone is busy:Processing symbol files
  3. Android图文混排(仿QQ空间评论)
  4. 毕业设计 基于单片机的便携抽湿加湿器
  5. Win10系统ie浏览器打不开网页的2种解决方法
  6. Gradle构造Spring boot项目(使用私服地址)
  7. Spring Boot/Cloud 界面与安全设计
  8. PHP 开发环境配置
  9. 设计模式之结构型模型
  10. 上海交通大学计算机学院导师介绍,上海交通大学计算机科学与工程系导师教师师资介绍简介-张同珍副教授...