基本开发工具

对于开发者来说,好好利用Mac中的一些软件是提高开发效率的最佳途径。下面笔者将介绍一些开发者必备的工具软件。

Homebrew

说到Mac上著名的App,就不得不说Homebrew这个Mac下的包管理工具。它类似于Ubuntu下的apt-get命令,通过这个工具可以在命令行下快速获取所需要的软件,而不像在Windows中需要打开浏览器,找到下载包(极有可能是伪装的垃圾软件),才能进行下载。正是由于Homebrew的强大功能,其官网(http://brew.sh/index.html)上甚至称它为“The missing package manager for OS X”,如图1.6所示。

基本开发工具 - 图1 图1.6 Homebrew官网

Homebrew的安装也非常简单,只需要在终端中输入以下命令即可。

  1. ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

有了Homebrew以后,再要下载一些开发用的App就不需要去网上找了,直接在终端中通过命令就可以直接下载最新版本的App。同时在安装好对应的App之后,Homebrew还会自动帮你配置好所有的环境变量。例如我们需要安装Node.js,只需要在终端中执行以下命令即可。

  1. brew install node

使用Brew之后,开发者就不需要去网上搜索各种软件的下载链接了,直接通过终端命令就可以获取到官方的安装包,非常方便、省事。

Homebrew镜像

由于Homebrew是国外的软件,下载源也基本在国外。因此在中国的开发者下载速度可能会比较慢,为了解决这个问题,有一些人为国内的开发者做了Homebrew的镜像。笔者这里只列举其中一个镜像源,地址为http://ban.ninja/,显示如图1.7所示。

基本开发工具 - 图2 图1.7 Homebrew镜像

其实不光Homebrew,很多国外的软件源在国内都有相应的镜像服务器。使用这些国内的镜像服务器可以非常方便地提高下载、更新速度,避免浪费大量的时间在网络上。

Homebrew Cask

Homebrew Cask可以说是Homebrew的孪生兄弟,但是它们的区别还是很大的。从原理上来说,Homebrew是直接下载源码解压,然后执行./configure指令和make install指令,统一安装在/usr/local/bin/目录下;而Homebrew Cask是下载已经编译好的应用包(.dmg或者.pkg文件),解压后放到统一的目录——/opt/homebrew-cask/Caskroom。

它们的优点是都可以直接在终端中快速完成App的下载和安装,并一键配置好各种环境变量,同时还能非常方便地卸载。Homebrew Cask的安装同样非常方便,只需要先安装Homebrew,然后在终端中输入以下指令。

  1. brew install caskroom/cask/brew-cask

Homebrew Cask由社区进行维护,因此它有更多、更丰富的软件。通常情况下,各种开发的软件可以通过Homebrew Cask进行获取,例如:

  • brew cask install evernote
  • brew cask install skype
  • brew cask install mou
  • brew cask install virtualbox
  • brew cask install iterm2

……

基本上开发能使用到的App这里都能获取到。当我们不知道Homebrew Cask是否有我们需要的App时,可以通过如下所示的指令进行搜索。

  1. ~ brew cask search android
  2. ==> Partial matches
  3. android-file-transfer androidtool
  4. android-studio xamarin-android

通过brew cask search指令,可以快速获取Homebrew Cask所能提供的App。如果Homebrew Cask中没有收录你想下载的App,那么你可以直接在其项目中提交pull request。

另外,你还可以通过以下指令查看App的相关信息。

  1. ~ brew-cask info node
  2. node: 4.2.1
  3. Node.js
  4. https://nodejs.org/
  5. Not installed
  6. https://github.com/caskroom/homebrew-cask/blob/master/Casks/node.rb
  7. ==> Contents
  8. node-v4.2.1.pkg (pkg)

或者通过uninstall指令卸载App。

  1. ~ brew cask uninstall node

甚至你还可以新建一个Shell脚本,输入所有你想要安装的App,从而创建一个一键自动安装所有App的脚本。

iTerm2终端工具

Mac系统对原生Shell的支持,是笔者认为Mac最好的功能之一。Mac系统自带的终端工具虽然已经能够胜任绝大多数的工作,可是一旦用过了iTerm2你就会发现,原来iTerm2才是Mac下最好用的终端工具。

安装iTerm2非常简单,可以去官网上下载安装,也可以直接通过Homebrew cask进行安装,指令如下所示。

  1. brew cask install iterm2

相对于Mac原生的终端工具,iTerm2提供了更多的功能,例如强大的快捷键支持、指令历史记录(⌘+Shift+H)、自动补全提示(⌘+;)、强大的搜索和粘贴复制功能,等等。但是最让笔者心动的还是它的配色功能,iTerm2提供了对整个终端工具的全面配置权限,你可以随心所欲地设置iTerm2的各种颜色、透明度,打造一个完全适合你自己开发风格的终端工具。

http://iterm2colorschemes.com/这个网站,收集了大量的配色文件。

读者可以根据自己的喜好,下载相应的xxx.itermcolors文件,双击进行安装,完成配色的设置。另外你也可以根据下载的配色文件进行二次自定义,微调其中的设置。

设置iTerm2的配色也非常简单,只需要打开preferences,选择profiles-color标签即可导入相应的主题配色,如图1.8所示。

基本开发工具 - 图3 图1.8 iTerm2终端设置

由于开发者需要经常使用到终端,因此有一个赏心悦目的终端环境是非常必要的。

Zsh与oh-my-zsh

在讲解Zsh之前,首先需要讲解一下前面一直没有解释的一个问题,那就是——什么是Shell?从语义上讲,Shell就是一个壳。什么壳呢?就是包裹内核的壳,用户是不能直接与内核通信的,就像你不能直接打电话给奥巴马。但是内核提供了一个能够与你通信的对象,这个对象就是Shell。而前面所说的终端工具、iTerm2等,就是帮助用户使用Shell的工具。

Linux给用户提供了很多Shell(之所以会有这么多Shell,是因为程序员大多会看不起其他程序员写的代码,因此总会有认为别人写得不好的程序员重新写一个Shell),通过在终端中输入如下所示的指令,可以显示目前系统中存在的所有Shell。

  1. cat /etc/shells

例如笔者现在系统中的Shell,如图1.9所示。

基本开发工具 - 图4 图1.9 查看所有的Shell

这些Shell的命名非常有意思,从bash、csh、ksh一直到zsh,好像是按照字母表的顺序递增一样,排在最后的就是本节重点要讲的Zsh。由此可见,Zsh的作者还是很有野心的,用字母表的最后一个字母“Z”开头,暗示着是最后一个Shell。不过,Zsh也绝对对得起这个称号,它是目前为止功能最为强大的Shell。但是,由于Zsh配置难度很大,所以一般用户很难使用,甚至是一般的程序员也很难使用。幸亏在一两年前,一个叫Robby Russell的程序员开发了一个项目——oh-my-zsh,这个项目致力于简化Zsh的配置,同时保留它强大的功能。可想而知,这个项目是多么伟大,以至于它在Github上的Star数达到了三万多颗,如图1.10所示。

基本开发工具 - 图5 图1.10 Github上的zsh

由于现在的Mac系统已经自带Zsh了,切换到Zsh你只需要使用如下所示的指令。

  1. chsh -s /bin/zsh

切换完毕后,只需要安装oh-my-zsh即可。在它的官网上,几乎可以找到关于oh-my-zsh的一切,所以当你不知道如何使用它的某个功能时,不用Google,更不用百度,请直接去它的官网http://ohmyz.sh/上寻找答案。

例如安装oh-my-zsh的方法,直接在官网首页就可以找到。

  1. $ sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

安装好oh-my-zsh之后,可以在它的配置文件中对它做进一步设置。首先在终端中打开oh-my-zsh的配置文件——.zshrc,指令如下所示。

  1. ~ open .zshrc

在打开的配置文件中,你可以做一些相关配置,如下所述。

  • 设置环境变量

由于使用的是Zsh,所以相关的环境变量都需要配置在Zsh的配置文件中,例如Android SDK的环境变量配置。

  1. export PATH=${PATH}:/Users/xuyisheng/Library/Android/sdk/platform-tools
  2. export PATH=${PATH}:/Users/xuyisheng/Library/Android/sdk/tools
  • alias别名

通过在配置文件中设置别名,可以简化复杂的命令。

  1. alias cls=clear

这样配置以后,只需要在终端中输入cls,就可以执行clear所执行的清屏命令。

  1. alias -s html=subl

这样配置以后,只需要在终端中输入html文件的文件名,例如test.html,就可以自动用Sublime打开该文件。

另外,oh-my-zsh也内置了一些开发常用的别名,例如git的一些操作。这些别名的详细使用方法,可以参见它的官网介绍。

https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git

  • 设置主题

oh-my-zsh的主题设置是它另一个非常强大的功能。在~/.oh-my-zsh/themes目录下,保存了各种主题的配置文件。读者可以根据自己的喜好,设置不同的主题。这些主题的预览,可以在官网上找到。

https://github.com/robbyrussell/oh-my-zsh/wiki/Themes

要修改主题也非常简单,只需要修改配置文件中的ZSH_THEME参数即可。

  • 插件

oh-my-zsh同样提供了插件式的开发方式。在~/.oh-my-zsh/plugins目录下,保存了各种oh-my-zsh插件,这些插件的详细解释可以在官网上找到。几乎你能想到的功能,这里都提供了支持。

https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins

要增加新的插件也非常简单,只需要在配置文件中找到plugins参数,并在后面的括号中增加相应的插件名即可。

Zsh有很多强大的功能,例如在终端中进入一个目录时,一般要使用cd指令,但是在Zsh下,直接输入目录名即可。而且输入d指令,可以查看历史跳转过的路径,选择前面的数字,即可再次跳转。

除了上面列举的这些功能之外,oh-my-zsh几乎将Zsh的强大功能发挥得淋漓尽致。从它各种强大的补全(自动忽略大小写)、提示,到搜索、跳转,再到完全自定义的主题、插件,oh-my-zsh几乎成了开发者的标配。

终端使用技巧

终端可以说是Mac、Linux系统的核心所在,对于使用熟练的开发者来说,终端的使用可以让开发如虎添翼。而对于不熟悉使用方法的开发者来说,终端的使用却是非常痛苦的。毕竟没有图形化界面,也没有很好的交互。因此掌握一些终端的使用技巧,对开发是很有帮助的。

  • 快速定位

在终端中输入指令之后,如果前面的指令输入有误,那么免不了通过方向键移动光标进行修改。但是当指令很长的时候,通过方向键移动就显得非常麻烦了。这时候通过Alt+鼠标点击,就可以将光标快速定位到鼠标点击的地方。另外,通过Control+A和Control+E快捷键,还可以快速将光标移动到开头和结尾处。

  • 搜索指令

当在终端中工作一段时间之后,开发者可能已经在终端中输入了很多指令,这时候通过方向键上和方向键下,可以自由切换之前输入过的指令。另外,使用Control+R快捷键,还可以搜索输入的历史指令,系统会进行模糊匹配,找到匹配的历史指令。

  • Find

Linux下的常用指令,开发者可以非常方便地查找一个文件,该指令的基本使用格式为find[path][options][expression],例如在当前目录下查“.txt”结尾的文件,指令为:

  1. find . -name '*.txt'
  • Grep

这个指令的使用非常广泛,在后面的讲解中,笔者将经常使用到这个指令。简而言之,这个指令就是用于过滤筛选结果的。

终端下的指令非常多,基本上在Linux中可以使用的指令,在Mac中都可以使用。所以熟悉Linux的开发者,在Mac中使用终端一定会有一种如鱼得水的感觉。

Alfred2搜索利器

在Mac系统中,系统给我们提供了一个功能强大的搜索工具——Spotlight。点击菜单栏上的那个小放大镜一样的图标,就可以启动Spotlight,如图1.11所示。

基本开发工具 - 图6 图1.11 Spotlight

通过Spotlight,用户可以搜索Mac上的各种文件,效率之高,足以让Windows望尘莫及,几乎在你输入的同时,就可以显示出搜索的结果。例如输入terminal,如图1.12所示。

基本开发工具 - 图7 图1.12 输入指令

系统马上就可以显示出关于terminal的一切,除了用来搜索文件、App,Spotlight甚至可以用来做计算器或者单位换算。在Windows上,由于它非常差的搜索体验,让很多人都没用适应使用搜索的习惯,而在Mac下搜索可能是一个非常高效的方式。

虽然Spotlight的功能已经非常强大了,但这次的主角却依然轮不到它,因为Spotlight能做的,Alfred2都能做;Spotlight不能做的,Alfred2也能做;Alfred2不能做的,你可以编程,让它可以做!

Alfred2既可以从官网(https://www.alfredapp.com/)上下载进行安装,也可以自己使用Homebrew进行安装。与Spotlight一样,Alfred2可以设置启动的快捷键。通常情况下,由于Alfred2是用于替代Spotlight功能的,因此一般将Alfred2的快捷键设置为Option+Space,这样在使用中就可以直接使用Spotlight的快捷键启动Alfred2。

与Spotlight一样,Alfred2的基本功能就是搜索。Alfred2的搜索功能完全覆盖了Spotlight的功能,同时还提供了更为高级的用法,打开Alfred2的Preferences界面,并选择Features选项卡,如图1.13所示。

基本开发工具 - 图8 图1.13 Alfred2

在Features选项卡下,Alfred2列举了它的一些基本功能,例如全文件检索,如图1.14所示。

基本开发工具 - 图9 图1.14 Alfred2检索

通过直接输入open、find、in、tags关键字,就可以直接启动打开、寻找并打开文件目录、在文件中检索、通过tag检索等功能。例如图1.15所示,直接在Alfred2中输入指令。

基本开发工具 - 图10 图1.15 Alfred2输入指令

直接回车,就可以打开这个文件。find可以直接打开文件所在目录,in可以直接搜索文件的内容,tags可以根据tag来进行检索。

不光是搜索本机的文件,Alfred2同样可以在Web上进行搜索,配置如图1.16所示。

基本开发工具 - 图11 图1.16 Alfred2快捷搜索

直接调出Alfred2,就可以直接使用Google或者自定义的搜索引擎进行搜索,甚至都不用打开浏览器。例如,在Alfred2中可以自定义一些搜索,点击右下角的“Add Custom Search”按钮,在Search URL中输入http://s.taobao.com/search?q={query},如图1.17所示。

这样设置以后,在Alfred2中只需要输入tao关键字,就可以直接调用淘宝进行搜索了,如图1.18所示。

基本开发工具 - 图12 图1.17 Alfred2配置搜索

基本开发工具 - 图13 图1.18 Alfred2自定义搜索

类似地,你可以完全定义自动的搜索入口,只需要将相应的搜索URL中的搜索内容换成{query}即可。

除了强大的搜索功能之外,Alfred2还提供了强大的系统功能支持,如图1.19所示。

基本开发工具 - 图14 图1.19 Alfred2系统配置

以最常用的锁屏功能为例,如果没有Alfred2,一般用户会通过设置触发角来进行锁屏,但是这非常容易误操作。而有了Alfred2之后,一切就变得非常方便了,只需要调出Alfred2输入lock,即可锁屏,如图1.20所示。

基本开发工具 - 图15 图1.20 Alfred2指令

类似地,相关的Log out、睡眠、清空垃圾箱、关机、退出程序等系统操作,都可以通过Alfred2这个总入口来进行触发。

关于Alfred2 Features下面的其他功能,这里就不再一一介绍了,相信读者只要简单地看一下说明,就知道该如何使用了。

如果仅仅是上面所提到的这些功能,相信Alfred2一定得不到Mac系统“App王者”的头衔,最多只能说是非常好用,那么Alfred2被无数Mac用户赞不绝口,一定是有原因的。这个原因就是Alfred2强大的Workflows功能(需要购买Alfred2的powerpack)。通过点击Preferences界面的Workflows选项卡,可以打开Workflows,如图1.21所示。

基本开发工具 - 图16 图1.21 Alfred2 Workflows

在Workflows中,可以自定义各种高级的功能入口,丰富到几乎所有的操作都可以通过Alfred2来实现,这里笔者添加了一个简单的Workflows——Top Workflows。安装了这个Workflows之后,调出Alfred2,直接输入top,如图1.22所示。

基本开发工具 - 图17 图1.22 Alfred2 top指令

这时列表中会自动显示目前的进程状态,类似直接在终端中执行的top指令。选中相应的进程,或者输入kill就可以直接结束掉这个进程。整个操作都不需要打开终端,如图1.23所示。

基本开发工具 - 图18 图1.23 Alfred2 kill指令

这里只是一个非常简单的Workflows。由于Workflows的强大,世界上大量的程序员都在贡献着不同的Workflows,你可以在这些网站上获得需要的Workflows。

http://alfredworkflow.com/,如图1.24所示。

基本开发工具 - 图19 图1.24 Alfred2查找Workflows

https://github.com/zenorocha/alfred-workflows,Alfred安装Workflows如图1.25所示。

基本开发工具 - 图20 图1.25 Alfred2安装Workflows

这些Workflows网站上,收集了数以千计的Workflows,例如直接搜索快递单号信息、列出今日知乎精华帖、检索新闻、天气信息,等等。甚至还可以做一些简单的App,例如在Alfred2中直接发送微博、Facebook,或者进行进制转换等功能,几乎没有什么不能做的。如果对别人写的Workflows都不满意,那么也可以自己编写属于自己的Workflows。

基本开发工具 - 图21在Windows系统中,虽然没有Alfred2,但是另一个搜索工具也是非常强大的,那就是——Everything。它可以说是Windows平台下最强大的搜索工具了,而且在大部分情况下,可以代替Alfred2的搜索功能。

Sublime Text

开发者除了需要有一款好的IDE之外,还需要有一个好的编辑器,这个编辑器可以是atom,也可以是vim,或者是Emacs。不过对于大部分的前端开发者来说,包括笔者,比较钟爱Sublime Text。

开发者可以通过Homebrew,或者到Sublime的官网下载安装包进行安装,其官网地址为http://www.sublimetext.com/。

在Sublime的官网上,记录了一些开发者喜欢使用Sublime的原因,如图1.26所示。

基本开发工具 - 图22 图1.26 Sublime官网

例如Sublime的快捷操作、丰富的插件和强大的定制功能等,使得Sublime已经成为开发者必不可少的编辑器之一了。

Sublime的安装

Sublime可以通过Homebrew进行安装,也可以去官网下载安装包进行安装。它们的区别就是,通过Homebrew进行安装不用配置环境变量,在终端中通过subl指令就可以操作Sublime。但如果是手动下载安装的话,就需要在终端的配置文件中配置相应的环境变量,如下所示。

  1. export PATH=${PATH}: /Applications/Sublime\ Text.app/Contents/SharedSupport/bin

配置好环境变量后,就可以在终端中启动Sublime了。

Sublime常用操作

Sublime作为一款记事本的替代软件,可以很方便地完成记事本的一切功能,同时能够快速、高效地打开大文件,界面简洁,操作容易上手。Sublime的初始界面如图1.27所示。

基本开发工具 - 图23 图1.27 Sublime单文件示例

当打开一个文件夹时,可以通过View-sidebar选择是否开启侧边栏。一般来说,在打开文件夹时,侧边栏是非常方便的导航工具,如图1.28所示。

基本开发工具 - 图24 图1.28 Sublime文件夹示例

Sublime拥有强大的功能,也有强大的配置和快捷键,开发者可以全面定义自己的Sublime操作。它的配置文件可以通过Performances-Setting-Default和Setting-User进行配置,如图1.29所示。

基本开发工具 - 图25 图1.29 Sublime设置

这两个配置文件的区别在于,Default是系统的配置,在Sublime升级的时候会被重置。但User是用户的配置,开发者可以将要修改的设置Copy到User中,以此覆盖掉系统的默认配置。下面笔者以一个简单的例子来讲解一下如何配置。首先,打开Setting-Default文件,如图1.30所示。

基本开发工具 - 图26 图1.30 Sublime配置表

如1.30图所示,Sublime完全是以键值对的方式进行配置的,找到对应功能的键,修改键的值即可完成配置。这里笔者找到open_files_in_new_window参数,将默认的这一行Copy到Setting-User中,并将参数的值改为false,即可设定Sublime每次打开文件都开启新的标签而不是新的窗口。

快捷键的修改也是类似的方法,其配置文件为Performances-Key Bindings Default和Key Bindings User,与操作配置的设置方法类似,这里不再赘述。

Multi Cursor Editor

与Android Studio中一样,Sublime可以通过设置多个光标进行同时编辑。这种操作方式在某些时候可以让编辑操作变得异常方便。例如给多个变量增加前缀名、同时修改多个类似的文本等,其效果如图1.31所示。

基本开发工具 - 图27 图1.31 Sublime多光标编辑

如图1.31所示,在编辑器中存在多个光标可以同时对这些光标所在区域进行编辑。要使用这个功能也非常简单,只需要按住Command键再点击要编辑的地方即可增加光标,从而进行编辑。

除了这种方式进行多光标编辑,Sublime还支持纵向多光标编辑,效果如图1.32所示。

基本开发工具 - 图28 图1.32 Sublime列编辑

可以发现,通过纵向选择的行形成了一块区域,开发者可以对这块区域内的文字进行统一修改。这个操作在某些情况下同样能够提供非常便利的编辑方式,它的使用方式也很简单,只需要按住Option键,再按住鼠标拖动即可。

Goto anything

与Android Studio类似,Sublime中集成了一个搜索功能,即Goto anything。通过快捷键Command+P可以打开该命令。在打开文件夹时,通过该指令可以查找打开的所有文件,如图1.33所示。

基本开发工具 - 图29 图1.33 Sublime Goto anything

当打开的文件为代码时,在Goto anything中输入@符号,可以查看代码的大纲结构,如图1.34所示。

基本开发工具 - 图30 图1.34 Sublime查看代码结构

类似地,如果是Markdown文件,也可以展示文档的大纲。

Package Control

前面列举的这些Sublime的优势,其实很多其他编辑器也都具有,Sublime令开发者着迷的实际上是它的插件库。Sublime具有非常强大的插件库,甚至可以毫不夸张地说,通过配置Sublime的插件可以把一个Sublime编辑器打造成一个Sublime IDE集成开发环境。特别是前端开发者,很多都使用Sublime作为自己的IDE进行前端开发,可想而知Sublime的插件功能有多强大。

Package Control的官网地址为https://packagecontrol.io/,显示如图1.35所示。

基本开发工具 - 图31 图1.35 Sublime Package Control

开发者可以在这里找到自己想要的插件,通过非常简单的方式进行安装即可使用。甚至开发者可以自己编写Sublime的插件,具有完全的可定制化和可配置性。

在官网上,详细介绍了Package Control的安装方法,以及每个插件的安装和使用方法,具体使用大家可以参考官网的说明,如图1.36所示。

基本开发工具 - 图32 图1.36 Sublime Package Control示例

除了各种功能性插件之外,这里包含了很多主题插件和配色插件,开发者可以根据自己的喜好进行设置。

基本开发工具 - 图33Sublime是一个跨平台的编辑器,在各个平台上都可以使用。

Bartender

Bartender的作用非常简单,就是帮你管理Mac的菜单栏,其项目地址为https://www.macbartender.com/。

有人可能要问,这样一个东西有什么用呢?它最基本的功能就是可以让Mac的菜单栏变得干净、整洁,如同其官网上介绍的那样,如图1.37所示。

基本开发工具 - 图34 图1.37 Bartender

但对于程序员来说,还有一个非常重要的原因,那就是可以避免社交工具的打扰。开发者可以在工作时间将QQ、微信这些图标隐藏,从而避免有强迫症的开发者看见未读消息的图标而打断开发工作。

反编译工具

关于反编译工具,笔者在《Android群英传》中已经讲解了APKTool和Dextojar这两个工具的使用,这里不再赘述。而是介绍一种更加全能的反编译工具——Jadx,该工具的项目主页为https://github.com/skylot/jadx。

按照作者的说明,通过如下所示的方式进行下载、编译。

  1. jadx git clone https://github.com/skylot/jadx.git
  2. Cloning into 'jadx'...
  3. remote: Counting objects: 11347, done.
  4. remote: Total 11347 (delta 0), reused 0 (delta 0), pack-reused 11347
  5. Receiving objects: 100% (11347/11347), 5.19 MiB | 73.00 KiB/s, done.
  6. Resolving deltas: 100% (5949/5949), done.
  7. Checking connectivity... done.
  8. jadx git:(master) gradle build

如果读者已经配置好gradle的环境变量,那么直接执行build指令即可。等Jadx编译完毕,进入其build/jadx/bin/目录,执行以下的操作。

  1. bin git:(master) ./jadx -d out ~/Downloads/test.apk

执行完毕后,在bin目录下就会生成out目录,里面便是反编译出的文件,如图1.38所示。

基本开发工具 - 图35 图1.38 编译后的Jadx目录

这里笔者只介绍了最简单的用法,该工具的作者在项目主页上展示了完整的使用方法,感兴趣的开发者可以自行查看,指令如图1.39所示。

基本开发工具 - 图36 图1.39 Jadx使用方法

这个反编译工具的优势在于可以一次性完成资源和代码的反编译。同时GUI界面支持强大的搜索能力,无论是对于学习还是研究其他App的代码,Jadx都是一个功能强大的工具。

其他常用工具

有了前面介绍的Homebrew,那么再安装工具、软件就非常简单了,几乎都是一行命令搞定。

  • Git

分布式版本管理工具,相信开发者都比较熟悉了。安装指令如下所示。

  1. brew cask install git
  • Java

同样是通过Homebrew,系统可以自动帮你安装好Java,并配置好Java的所有环境变量。安装指令如下所示。

  1. brew cask install java
  • Android Studio

作为Android开发者,自然是不能忘记Android的开发IDE——Android Studio。安装指令如下所示。

  1. brew cask install android-studio
  • Parallels Desktop

Mac中虚拟机,功能非常强大,基本包含了VirtualBox的所有功能。同时,虚拟机的App在Mac系统下同样也会有提示。

  • 1Password

Mac下的密码管理软件。

  • Tree

Tree这个小工具对于在终端中查看文档的目录结构是非常有用的。安装指令如下所示。

  1. brew install tree

在某个需要查看的目录下,只需要执行如下指令就可以在终端中显示文档树形结构。

  1. hexo tree -L 2
  2. .
  3. ├── _config.yml
  4. ├── db.json
  5. ├── node_modules
  6. ├── hexo
  7. ├── hexo-generator-archive
  8. ├── hexo-generator-category
  9. ├── hexo-generator-index
  10. ├── hexo-generator-tag
  11. ├── hexo-renderer-ejs
  12. ├── hexo-renderer-marked
  13. ├── hexo-renderer-stylus
  14. └── hexo-server
  15. ├── package.json
  16. ├── public
  17. ├── 2015
  18. ├── archives
  19. ├── css
  20. ├── fancybox
  21. ├── index.html
  22. └── js
  23. ├── scaffolds
  24. ├── draft.md
  25. ├── page.md
  26. └── post.md
  27. ├── source
  28. └── _posts
  29. └── themes
  30. └── landscape
  31.  
  32.  
  33. 21 directories, 7 files
  • 强化Finder

常用的Finder强化工具,主要有Pathfinder和XtraFinder两种。不管使用哪一种都是对原生Finder的强化,例如查看隐藏文件、通过选项卡方式打开多个Finder等功能。