论一款炫酷 Android 开源项目的修炼之路(下)

Travis CI 的使用

官网: http://travis-ci.org/

ps: 这个是公开的,如果需要使用私有的,请使用 .com 域名。

需要提醒的是:每次提交代码后都会重新下载需要的资源文件哦,所以时间很长,耐心等待吧。

TravisCI 有什么用?

travis-ci 就是 自动化 CI
工具,类似于大公司经常使用的 Jenkins,但是 travis-ci 是在云端的,而是支持 github, 还免费,我们可以 用
travis-ci 做很多的事情,不仅仅是 编译看 项目有没有问题。例如在项目构建结束以后,我们可以打包,并发布 apk 到都 蒲公英,
fir,也可以用邮件通知给相关的开发人员和业务任务。 做一些简单处理,轻轻松松。这部分内容到后面尽快整理,在写一篇。

添加 github 项目到 travis-ci
  1. 进入 Travis 官网后,使用 GitHub 账号 登录,成功后:
  2. 点击 加号 ,能看到你 GitHub 里面的所有:
    , 如果没有项目或者没有你新建的项目,请点击右上方的 Sync account 按钮。
  3. 点击这里:

    开启 Travis 构建。点击这个可以配置该项目:

  4. 默认是空的:
在 项目中添加 travis-ci 需要的 .travis.yml 文件
  1. 在项目根目录下直接创建 一个 .travis.yml 的文件。
  2. 直接在文件里面添加代码:

.travis.yml 文件 源代码

language: android
jdk: oraclejdk8
sudo: false

android:
  components:
    - tools
    - build-tools-25.0.2
    - android-25
    - extra-android-m2repository
    - extra-android-support
  licenses:
      - android-sdk-license-.+
      - ‘.+‘

before_install:
  - chmod +x gradlew
  - mkdir "$ANDROID_HOME/licenses" || true
  - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
  - echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"

script:
  - ./gradlew assembleRelease

因为该文很长很长,所以暂时就不解释具体含义了,可以看看官方文档。

push 项目到 github, travis-ci 自动监测构建
  1. 提交到代码,并 push 到 github。会自动触发 Travis 的自动构建。
  2. 下面黑色部分是构建的过程:
    , 黑框上的白色点点点击后会变成绿色,会自动滚动到最下面。

喝一杯咖啡,慢慢等待吧,最难熬的时候已经过去,此刻是享受的时候了。

回到首页刷新后,能看到:

说明我们已经构建成功了。

.travis.yml 需要注意的地方

初次使用 Travis 的试试,总遇到 说 android 的一些协议未接受而构建失败,导致耗费了一两天,曾经一度想放弃,但是最终坚持了下来,通过各种搜索,摸索,猜测,终于搞定。其实最初的项目是这个:https://github.com/gdky005/TestJitpack ,里面有很多辛酸史记录,从提交记录能看得出来,有兴趣的可以研究研究,也许能解决你现在的问题。

Travis CI 协议问题解决方法:http://stackoverflow.com/questions/37615379/travis-ci-build-doesnt-work-with-android-constraint-layout

最重要部分在这里:

machine:
  environment:
      ANDROID_HOME: /usr/local/android-sdk-linux

dependencies:
  pre:
    - mkdir -p "$ANDROID_HOME/licenses"
    - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
    - echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
添加 travis-ci 徽章到 github

激动的时刻再次到来,让我们找找徽章在哪里呢?

让我们来选择 markdonw 格式:

并复制上。

同样如上修改 readme.md。

加空格后,直接贴上去:

这里需要说明的是,如果换成,图标也会换行哦。这样写就能保证所有的图标在一行了。

回到项目首页以后就能发现:

添加 Travis 徽章成功。

By the way! 上面是最初级的构建过程,如果遇到单元测试就不行了,还得参考 我的开源项目 TestJitpack。 不过有点乱,后面整理下。

Circle CI 的使用

官网: https://circleci.com/

Circle CI 和 Travis CI 有什么区别?需要一起使用吗?

Circle CI 相对来说比 Travis CI 好一些,至少界面上来说哈。还提供 ssh 的连接,构建过程相对来说 比较透明直观。例如:

Travis CI 的文档资料相对 Circle CI 来说 比较多, Circle CI 资料少之又少。

Travis CI 的使用率还是很高的, 不过 Circle CI 相对来说比较 年轻化,符合主流的科技感,更智能。

说到是否需要一起使用,其实都行,不过我在观察 github 主流项目的时候 有不少项目都是同时使用的,多一个技能总没有坏处吧。其实会了 Travis CI,在加 Circle CI 真是简单不少呢,只是基本语法不太一样。

添加项目到 Circle CI

1.登录主页面:

在 project 里面自己的账号下搜索刚创建的项目。

2.一般直接选择 Ubuntu 即可:

点击绿色 Build project.

3.能看到:

但是这次肯定会失败,因为我们还没有添加 Circle 需要的文件呢。

在项目中添加 Circle CI 需要的 circle.yml 文件
  1. 在项目的根目录下 添加 circle.yml 文件;
  2. 添加 circle 的代码到文件中:

circle.yml 源代码:

machine:
  java:
      version: oraclejdk8
  environment:
      ANDROID_HOME: /usr/local/android-sdk-linux

dependencies:
  pre:
    - mkdir -p "$ANDROID_HOME/licenses"
    - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
    - echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"

  override:
    - echo y | android update sdk --no-ui --filter "android-25"
    - echo y | android update sdk --no-ui --filter "build-tools-25.0.2"
    - echo y | android update sdk --no-ui --filter "extra-android-m2repository"
    - echo y | android update sdk --no-ui --filter "extra-android-support"
    - echo y | android update sdk --no-ui --filter "extra-google-m2repositor"
    - ./gradlew dependencies || true

test:
  override:
    - ./gradlew build
push 项目到 github, Circle CI 自动监测构建

1.提交代码后,发布到 github,Circle CI 会自动执行。

2.

点击进来后,会看到:

说明已经开始 构建了, 下载需要的东西:

3.构建中的一些步骤:

相对 Travis 来说展示更直观。

4.看到

说明构建成功。

添加 Circle CI 徽章到 github

我们再来把 Circle CI 的徽章找到,并添加到我们的 github 上去吧。

我们把 徽章的 markdown 链接拷贝下来放入到我们的 主项目页面的里面。

回项目主页刷新后:

非常 happy, 已经添加成功了。

接下来添加什么呢?

Github上许多开源项目都使用了Codecov来展示单元测试结果, 就它了。

Codecov 的使用

根据文中的指示:我们能看到一个开源的 github 项目 https://github.com/codecov/example-android, 不过看起来点晕晕的,于是摸索了一段时间。

我们之后都直接使用 Trivas CI 构建了。

添加项目就不说了,进入后,点击 project changes, 找到自己的项目:

等生产报告后,进入该网站就能看见结果。

利用 Jacoco 生成报告

Codecov不支持自己生成Android的测试覆盖率报告,它能做的是接收Jacoco生成的报告并进行可视化

1) 在 app 的 build.gradle 文件中 添加依赖

        //Jacoco 生成报告的依赖
    androidTestCompile(‘com.android.support.test:runner:0.5‘, {
        exclude group: ‘com.android.support‘, module: ‘support-annotations‘
    })
    // Set this dependency to use JUnit 4 rules
    androidTestCompile(‘com.android.support.test:rules:0.5‘, {
        exclude group: ‘com.android.support‘, module: ‘support-annotations‘
    })
    // Espresso-contrib for DatePicker, RecyclerView, Drawer actions, Accessibility checks, CountingIdlingResource
    androidTestCompile(‘com.android.support.test.espresso:espresso-contrib:2.2.2‘, {
        exclude group: ‘com.android.support‘, module: ‘support-annotations‘
        exclude group: ‘com.android.support‘, module: ‘support-v4‘
        exclude group: ‘com.android.support‘, module: ‘appcompat-v7‘
        exclude group: ‘com.android.support‘, module: ‘design‘
        exclude group: ‘com.android.support‘, module: ‘recyclerview-v7‘
    })
    androidTestCompile(‘com.android.support.test.espresso:espresso-core:2.2.2‘, {
        exclude group: ‘com.android.support‘, module: ‘support-annotations‘
    })

2) 在 需要构建测试覆盖率报告的Module (AndroidBadge 项目中的 app) 的gradle文件中设置。

debug{
        testCoverageEnabled true
}

3) 可以在尝试在本地生成报告:

./gradlew :app:createDebugAndroidTestCoverageReport 生成测试报告。  app 就是咱们项目中要测试的 module

测试报告地址:app/build/reports/coverage/debug/index.html。

上报数据给 Codecov
  1. 使用Github账号登录 https://codecov.io/, 并提供授权给该应用。
  2. 在.travis.yml文件中添加命令将测试覆盖率报告上传给Codecov。

    after_success:

    - bash <(curl -s https://codecov.io/bash)

Codecov 需要用到 单元测试,所以必须要在 配置文件中添加模拟器

因为之前修改过很多次,过程很繁琐,直接给配置文件了,相信大家一眼就能看出来。

完整的配置文件是:

language: android
jdk: oraclejdk8
sudo: false

env:
  global:
      - ANDROID_API_LEVEL=25
      - ANDROID_BUILD_TOOLS_VERSION=25.0.2
      - ANDROID_ABI=armeabi-v7a
      - ANDROID_TAG=google_apis
      - ADB_INSTALL_TIMEOUT=20 # minutes (2 minutes by default)

android:
  components:
    - platform-tools
    - tools # to install Android SDK tools 25.1.x
    - build-tools-$ANDROID_BUILD_TOOLS_VERSION
    - android-$ANDROID_API_LEVEL
    - sys-img-armeabi-v7a-google_apis-$ANDROID_API_LEVEL

  licenses:
      - android-sdk-license-.+
      - ‘.+‘

before_install:
  - chmod +x gradlew
  - mkdir "$ANDROID_HOME/licenses" || true
  - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
  - echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"

before_script:
  # Create and start emulator
  - echo no | android create avd --force -n test -t "android-"$ANDROID_API_LEVEL --abi $ANDROID_ABI --tag $ANDROID_TAG
  - emulator -avd test -no-skin -no-window &
  - android-wait-for-emulator
  - adb shell input keyevent 82 &

script:
  - ./gradlew assembleRelease
  - ./gradlew :app:createDebugAndroidTestCoverageReport --info --stacktrace

after_success:
  - bash <(curl -s https://codecov.io/bash)
codecov 总结

Travis-CI 对 android 的单元测试支持不是很好,因为需要开启虚拟机,开启这个过程就得10分钟(我的测试时间),很耗费时间。有时候也连接不上,一次跑下来估计得个 20分钟左右吧。所以,稳定性确实不是很高。如果不做单元测试,而只是做发布之类的,稳定性还是高的。

单元测试应都会吧, 这里检测的标准就是说 每个类和方法都必须检测到,否则就算没有覆盖。我这里也就简单在项目中写过例子,剩下的你们自己玩吧。

所以 要不要使用单元测试 还是根据项目决定吧。

获取 codecov 的徽章

Api_Level 的使用

让 codecov 慢慢构建吧,我们先继续。

官网:https://android-arsenal.com/api

Api_Level 有什么用?

Api_Level 是 arsenal 网站给各位开发者的一个福利,我们的 android 开源项目一般都有一个最低的构建版本。平时我们都是在 md 文件中写上 支持版本是 14+等很多样式,但是 不够醒目,有了 Api_Level 后,打开开源项目主页就知道,最低版本是多少。 不用看文档也能明白,轻松不少。 对应的 api 的一些特性和修改也能在这里展现。

Api_Level 怎么玩?

如果你的开源项目最低支持版本是:14,那么就选择这里:

把这个拷贝下来,放入我们的 md 文档中吧。

codacy 的使用

官网: https://www.codacy.com

codacy 是什么?

codacy 编程代码自动审查服务平台,可以帮我们分析存在的问题 或者说是 bug,主要包括代码质量、语法规范、功能可用性方面的检查。

codacy 怎么使用?

进入官网,添加自己的需要的 project。

完成后,等待一段时间就好了,会给你发邮件通知,已经完成。

完成后的效果是:

咱们的这个项目评级是 B。

codacy 徽章呢?

拷贝下来,手动放到 咱们的项目的 md 文档中把。比较放心一些,如果点击后面的 add badge ,会自动加到项目中,需要我们 pull request 里面处理下。

生成个性徽章

官网: https://shields.io/

有什么用?

彰显个人魅力,体现某种功能。例如咱们做一个跳转到我的博客的 个人徽章。

怎么玩?

滚动网页到最下面:

在对应的地方填写相应的东西(也支持中文哦), 完成后点击后面的 Make Badge 按钮试试看。

我想我的个人图标是这种浅蓝色:

那么我就在 color 中直接写:7AD6FD

点击生成 一个地址, 先保存下面。

这个原理是什么呢? (回答最开始的问题)

徽章的格式即是 markdown 的格式:

[![A\](B)\](D)

A 表示的页面中需要显示的内容, B 表示的是图片的地址,D 表示的是点击后需要跳转的链接的地址。

合成我的个人专属图标吧

图片地址是上面存下来的。 前面显示内容:作者。按照上面的规范出来的结果就是:

[![作者\](https:\//img.shields.io\/badge\/%E4%BD%9C%E8%80%85-gdky005-7AD6FD.svg)\](http:\//www.gdky005.com)

把这段代码 粘贴到 我们的 md 文档中,个性专属徽章就出来了,而且点击后能到我们想去的地方。

很酷吧,其实还可以做很多这样的事情。

本文的 中的 项目地址是: https://github.com/gdky005/AndroidBadge

需要逐步了解项目的过程或者 根据步骤出现问题的话,可以check 对应的节点,看看代码是否不同,然后自行修改,我特意保存了该进度。如果下图中 git提交的记录:

相信小伙伴们肯定能做出更有意思的东西,到时候记得与我和大家分享,比较有特色的,我会将你们的链接挂载到 Github 项目里面。

时间: 2024-08-07 17:02:16

论一款炫酷 Android 开源项目的修炼之路(下)的相关文章

论一款炫酷 Android 开源项目的修炼之路(上)

写在前面 在平时的开发过程中,我们经常会查阅很多的资料,最常参考的是 Github 的开源项目.通常在项目的主页面能看到项目的简介和基本使用,并且时不时能看到页面汇中有好多的彩色标签,看起来很酷,很专业,很有逼格,能提升很多的好感度. 前言 本文是一篇很长的文章,其中有很多是素材图片,务必做到每个细节笔者都实践一遍.考虑到大家时间有限,各取所需,所以按照笔者的惯例,首先发布一篇完整版,其次,有一篇缩略版.但本文这次缩略版不好做,所以综合考虑,把每个单独的知识点拆分出来,抓住重点,尽量让大家看的开

Android开源项目总结

Android经典的开源项目其实非常多,把自己熟悉的一些开源项目整理起来,希望能对Android开发同学们有所帮助 项目篇: 1.Apollo音乐播放器 就一个很好的播放器,但是实现的特别好!!! 地址:https://github.com/Splitter/android_packages_apps_apolloMod 2.Oschina客户端 OSChina网站客户端,wp版,ios版都有开源哦. 地址: https://github.com/oschina/android-app 3.Xa

Android开源项目及库搜集

TimLiu-Android 自己总结的Android开源项目及库. github排名 https://github.com/trending,github搜索:https://github.com/search 目录 UI 卫星菜单 节选器 下拉刷新 模糊效果 HUD与Toast 进度条 UI其它 动画 网络相关 响应式编程 地图 数据库 图像浏览及处理 视频音频处理 测试及调试 动态更新热更新 消息推送 完整项目 插件 出名框架 其他 好的文章 收集android上开源的酷炫的交互动画和视觉

59.Android开源项目及库 (转)

转载 : https://github.com/Tim9Liu9/TimLiu-Android?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io#%E5%8D%AB%E6%98%9F%E8%8F%9C%E5%8D%95 目录 UI UI 卫星菜单 节选器 下拉刷新 模糊效果 HUD与Toast 进度条 UI其它 动画 网络相关 响应式编程 地图 数据库 图像浏览及处理 视频音频处理 测试及调试 动态更新热更新 消息推送

66.Android 开源项目分类汇总

转载:https://github.com/Trinea/android-open-project 目前包括: Android 开源项目第一篇——个性化控件(View)篇  包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar.TextView.ScrollView.TimeView.TipView.FlipView.ColorPickView.GraphView.UI Style.其他Android

优秀的 Android 开源项目

摘要  转载http://www.trinea.cn/android/android-open-source-projects-view/,方便大家找到自己合适的资料 目录[-] 一.ListView 二.ActionBar 三.Menu 四.ViewPager .Gallery 五.GridView 六.ImageView 七.ProgressBar 八.其他 GitHub上优秀Android开源项目 3. Android开发神器 1.Xabber客户端 2.oschina客户端 3.手机安全

GitHub 优秀的 Android 开源项目

转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包含ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar及其它如Dialog.Toast.EditText.TableView.Activity Animation等等. 一.ListView android-pulltorefresh 一个强大的拉动

Android--上百个Android开源项目分享

上百个Android开源项目分享,希望对android开发有帮助. Android PDF 阅读器 http://sourceforge.net/projects/andpdf/files/ 个人记账工具 OnMyMeans http://sourceforge.net/projects/onmymeans/develop Android电池监控 Android Battery Dog http://sourceforge.net/projects/andbatdog/ RSS阅读软件 Andr

GitHub上史上最全的Android开源项目分类汇总

今天在看博客的时候,无意中发现了@Trinea在GitHub上的一个项目Android开源项目分类汇总,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有参考价值,包括很炫的界面特效设计.个性化控件.工具库.优秀的Android开源项目.开发测试工具.优秀个人和团体等.可以这样说,每一位Andorid开发人员都能从中找到一个或多个适用自己项目的解决方案,消化吸收并加以利用,可以为自己的APP增色不少.文章最后还列出了部分国外著名Android开发者的信息,包括GitHub地址