首页 > 代码库 > 教你一招最屌的阅读开源项目的姿势

教你一招最屌的阅读开源项目的姿势

相信自从看了我的 GitHub 教程很多人开始爱上了 GitHub,有些人微博也不刷了,知乎也不刷了,改刷 GitHub 了,而且刷的不亦乐乎。这是好事,多接触多了解一些开源项目,对你之后的项目中的开发效率有很大提高。但是,我要告诉你们的是,你们不是正确的姿势在阅读开源项目,今天就教你们一招最屌的姿势。

首先说明下,这里的「阅读」是泛指,对于 Android 来说,除了阅读还有运行 demo 看下项目效果等。

来看下一般人的阅读开源项目的姿势是怎么样的:

  1. 找到项目地址
  2. 点击「download zip」
  3. 解压到一个目录
  4. 打开 Android Studio
  5. 导入项目
  6. Sync gradle
  7. 运行项目
  8. 选择运行的设备
  9. 删除下载的 zip 文件

对比下你是不是这样的?这效率也太低了。

一方面是步骤繁琐,当然可能有部分人用 Git 来代替下载,稍微减少了点步骤,另一方面 Android Stduio 很吃内存,光启动都要不少时间,更别提导入、编译、运行了,我们实际开发中是不得不用,但是如果只是为了阅读源码,看下效果就运行 Android Stduio 未免消耗太大,而且经常是很多时候可能同时阅读多个项目,那么同时打开多个 Android Stduio 窗口更是对电脑是个大考验。

来看下我的阅读源码的步骤:

  1. git clone 项目地址
  2. 用 sublime(或者 atom、vim)轻量级编辑器打开阅读源码
  3. 用 gradle 命令行运行查看效果

是不是步骤大幅简化?另外也不用打开 Android Studio 这内存机器了,而且用这种轻量级编辑器想打开多少项目就打开多少项目,第三部直接命令行编译、运行更酷。

很多人肯定会问第三步的具体流程,这个就是关键点了。下面直接列出这一步的一些关键点,就不详细解释了,之前看过我 Gradle 文章的应该懂。

  • 1.首先检查开源项目的 gradle 版本,buildTools 版本以及 compile sdk 版本,确保这三个ok就好办了;

  • 2.利用项目内置的 gradle wrapper 来进行编译打包:

./gradlew clean
./gradlew assembleDebug

这两步就可以编译、打包,然后自己手动安装;

  • 3.编译打包、安装其实可以合并:

    ./gradlew clean
    ./gradlew installDebug

这两步就直接安装到你设备上了,都不需要手动安装,是不是更方便快捷了?

那有人问了,有没有一步下载、编译、打包、运行就可以搞定的?卧槽,你真是懒到家了,但是我要告诉你还真有!

GitHub 上有一个项目叫 dryrun 就可以满足你的要求,翻译过来我把它叫做「干跑」,这翻译够直白吧!

只要安装这个工具,直接执行一个命令:

$ dryrun git@github.com:cesarferreira/android-helloworld.git

上面那个 Android 的 demo 就可以直接安装到你的设备上了,是不是狂拽酷炫吊炸天?

技术分享

但是本质上跟我自己的步骤一致,只不过它通过 ruby 脚本把它合并起来了。

值得注意的是:

  1. dryrun 是一个 gem,它是基于 ruby 的,如果对 ruby 不了解,本地没安装过 ruby 折腾起来挺费事的,它的安装很简单:

    gem install ruby

  2. 如果你想要运行的 Android 项目在 GitHub 上目录里 gradle 版本,buildTools 版本以及 compile sdk 版本跟你本地不一致,那么会运行失败;

  3. 它的实用价值没有那么高,就是用来装逼的,适合我这种又懂 Ruby 又懂 Android 同时又喜欢装逼的人;

  4. 有兴趣的不妨折腾下,不感兴趣的你该学会我的第二种方式,很实用,效率很高,你值得拥有!

嗯,就这样,装逼完毕!

本文原创发布于微信公众号 AndroidDeveloper,id:googdev,欢迎关注获取更多原创干货!

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

    教你一招最屌的阅读开源项目的姿势