为了把大家从越来越多的技术水文中拯救出来,“大公司技术博客”将良心推送国内外大公司的优质干货文,如Facebook, Google, Medium, GitHub(嗯,我知道很多国外的文章你点不开,或者是英文的你懒得看)等。
技术创新、深度研究、未来趋势,这里都有。
当然了,这么说无非就是希望你点下 关注 。
这篇文章来自 César Ferreira ,Medium 上的 Android 大牛,GitHub 上 dryrun (2.3k star) 的作者。文中介绍了他在使用 Terminal 上的一些心得。
事实上,优雅地使用 Terminal 除了能让你看起来很牛逼,更能明显提高 Android 开发效率,至少在很多场景下比傻瓜式按钮点击要快太多,作为一名有追求的程序猿,继续读下去吧。
正文开始。
作为一个 Terminal 脑残粉,我一直想写篇关于 Terminal 方面的文章。合理地使用 Terminal 不仅能让你变得更酷,还能让很多事情变得更快。比起不断点击各种菜单按钮,输入几个字符然后点击 Tab 键让事情更快。
这篇文章的目的就是分享下我的 Android 开发 workflow 中是如何使用 Terminal 的。
因为我们要花费很多时间在命令行上,所以安装一款好的 Terminal 是非常重要的。下载 iTerm2 吧。
iTerm2 是新时代的命令行工具,把命令行变得非常酷,提供了很多你不知道的功能。比如分屏,自定义颜色主题,粘贴历史,快捷键管理,还有超级多非常有效的功能。
官方地址: http://www.iterm2.com/
当你打开 Terminal 程序,它会自动运行在一个名为 Bash 的 Shell 中。Bash 是目前为止最为流行的 Shell,非常多 UNIX-based 的操作系统都默认具备 Bash。但是,对于开发者而言,有不少比 Bash 更快更好用的 Shell。
oh-my-zsh 就是一个非常好的选择,它自带了一个 git 插件,里面有很多命令的 aliases 和许多有用的功能。
插件 zsh-autosuggestions 是非常好用的 zsh 自动补全工具,会基于历史命令进行自动补全提示:
GitHub 地址: https://github.com/zsh-users/zsh-autosuggestions
智能遍历历史命令
你可以通过快捷键 Control+R 来智能搜索历史命令。当你开始输入指令时 shell 就会自动补全之前输入过的命令。然后你可以直接点击 Enter 来执行,或者继续点击 Control+R 来遍历下一个历史指令。
当你偶遇 GitHub 上一个看起来不错的 library,你可以做下面几步来将其运行到手机上:
点击 download zip
解压出 zip file
打开 Android Studio
Import 刚刚下载的 library
点击 Sync gradle
点击 Run
选择想要运行的设备
进行测试
删除 项目文件夹
和 zip 文件
如果你不需要这个 library
或者,你可以选择下面的方式:
试一下 dryrun :
dryrun REMOTE_GIT_URL
GitHub地址:https://github.com/cesarferreira/dryrun
--offline
参数可以让 gradle 直接从本地缓存里去抓取依赖包。这种离线模式下,gradle 将不会去访问网络来获取依赖文件。如果所需的依赖不存在与本地,那它就会报错提醒你。
因此,你可以以最快速度去 assemble debug
:
./gradlew assembleDevelopDebug --offline
以最快速度去跑 unit test
:
./gradlew test --offline
另一种方式,你可以在 Android Studio 开启 gradle 的 offline 模式:
Settings -> Build, Execution, Deployment -> Build tools -> Gradle
如果你运行 ./gradlew tasks
,你将得到一系列可用的 gradle task,但是,它并没有列出来这些 task 的快捷方式,下面有一些例子你可以尝试:
iDD 对应 i nstall D evelopment D ebug
aDD 对应 a ssemble D evelopment D ebug
cC 对应 c onnected C heck
等等
所以,你可以用下面的方式来执行 gradle task:
./gradlew :App:iDD
看到没,用起来更轻量了。
实时查看 unit test logging 有一种比较 trick 的方法:
android {
...
testOptions.unitTests.all {
testLogging {
events 'passed', 'skipped', 'failed', 'standardOut', 'standardError'
outputs.upToDateWhen { false }
showStandardStreams = true
}
}
}
现在当你运行 test 时可以看到类似下面的输出:
在开发过程中,你总是想要只查看来自你 app 的 log。不幸的事,由于每次你把代码 deploy 到手机上时进程都在变化,所以你很难 grep 出这些 log。
有一个不错的小工具:pidcat(GitHub star: 2657)能够帮你按应用程序报名来过滤 log。通过下面一条指令,就可以过滤得到该包名下的所有 log,而且还是良心的彩色哦。
pidcat github.cesarferreira.helloworld
GitHub地址: https://github.com/JakeWharton/pidcat
总而言之,大概包括以下几点来提高你的 Terminal 使用水平:
安装 iterm2 ,一个比默认的更好用的 Terminal;
使用 oh-my-zsh shell,开启它的 auto-suggestions;
使用 gradle 的快捷方式: ./gradlew iDD
;
利用 --offline
来达到更快的编译速度;
优雅地打印你的 test 结果;
在 debug 模式下直接把应用程序进程 attach 到 debugger 上而无需重启 app;
利用 pidcat 来改造你的 logcat。
看完文章,快去尝试一把!
顺便奉上大牛的 Github 地址别拦着我:https://github.com/cesarferreira
对了,po主花费一个半小时时间阅读,搜索,编辑。
你连五毛都不给?