小引子
在平時(shí)的開發(fā)過程中悄但,我們經(jīng)常會(huì)查閱很多的資料,最常參考的是 github 的開源項(xiàng)目石抡。通常在項(xiàng)目的主頁面能看到項(xiàng)目的簡介和基本使用檐嚣,并且時(shí)不時(shí)能看到頁面匯中有好多的彩色標(biāo)簽,看起來很酷啰扛,很專業(yè)嚎京,很有逼格,能提升很多的好感度隐解。
前言
本文又是一篇很長的文章鞍帝,如之前寫的某篇文章一樣,基本是一口氣連續(xù)兩三天的寫煞茫。寫啊寫啊寫帕涌,不知不覺就寫了好多,其實(shí)有很多是素材圖片续徽,務(wù)必做到每個(gè)細(xì)節(jié)我都實(shí)踐一遍蚓曼。
考慮到同學(xué)們的時(shí)間有限,各取所需钦扭,所以按照我的慣例纫版,首先有一篇完整版,其次客情,有一篇縮略版其弊。可是這次縮略版不好做膀斋,所以綜合考慮梭伐,把每個(gè)單獨(dú)的知識(shí)點(diǎn)拆分出來,抓住重點(diǎn)概页,盡量讓大家看的開心籽御。
這里需要提醒的是:
看了完整版就不用看精簡集合了练慕,內(nèi)容都一樣惰匙。完整版具有一定的連貫性技掏。
精簡版就看的清爽哈,以備自己玩的時(shí)候项鬼,快速查找相關(guān)資料和步驟哑梳。
這里優(yōu)先匯總下:
相關(guān)鏈接:
完整版:
打造一個(gè)高逼格的android開源項(xiàng)目——小白全攻略
精簡集合版:
徽章系列1: Top 30 android 開源項(xiàng)目徽章
徽章系列2:JitPack 的使用
徽章系列3: Travis CI 的使用
徽章系列4: Circle CI 的使用
徽章系列5: Codecov 的使用
徽章系列6: Api_Level 的使用
徽章系列7: codacy 的使用
徽章系列8:生成個(gè)性徽章
總分類:
徽章(shields )系列文章總分類
github 地址:
徽章項(xiàng)目 Demo github 地址:
https://github.com/gdky005/AndroidBadge
下面正文,正式開始绘盟。
范例
我們以最流行的 android 開源項(xiàng)目 MPAndroidChart 為例來看看鸠真。
- 前兩個(gè)藍(lán)色的標(biāo)簽:開始兩個(gè)藍(lán)色的標(biāo)簽是開源項(xiàng)目主要貢獻(xiàn)者 Twitter 的聯(lián)系方式,點(diǎn)擊后可以跳入到 Twitter 的主頁龄毡,查看該大神的 動(dòng)態(tài)吠卷。
- 橘色的標(biāo)簽:是國外比較有名的 開源項(xiàng)目網(wǎng)站 android-arsenal, 很多開源項(xiàng)目都會(huì)在這里找到沦零,有該項(xiàng)目的詳細(xì)介紹祭隔。包含組員,版本號(hào)路操,github 項(xiàng)目基礎(chǔ)信息等等疾渴。點(diǎn)擊后會(huì)進(jìn)入 MPAndroidChart 項(xiàng)目的首頁,能看到有好多想知道的屯仗,不想知道的各種信息搞坝。
- release藍(lán)色的標(biāo)簽: 點(diǎn)擊后能進(jìn)入到比較有名的 jitpack.io 對(duì)應(yīng)的MPAndroidChart 頁面,直接獲取 MPAndroidChart 的最新版本魁袜,也能看到之前的構(gòu)建歷史桩撮。下面會(huì)重點(diǎn)介紹 jitpack.io 的使用。
- 綠色的標(biāo)簽: 這個(gè)比較有意思峰弹,是 當(dāng)前想支持的最低版本距境,MPAndroidChart的最低版本是 api-8。 點(diǎn)擊后會(huì)進(jìn)入到Android 2.2–2.2.3 Froyo (API level 8) 的詳細(xì)介紹垮卓。這個(gè)功能是 android-arsenal 專門提供 開發(fā)者使用的垫桂。 下面也會(huì)有所介紹。
下面我們將 這些標(biāo)簽稱之為 徽章 (shields)粟按。
Top 30 android 開源項(xiàng)目徽章
我們嘗試在 github 里面搜索 以 android 關(guān)鍵字 開發(fā)語言為 java 的開源項(xiàng)目诬滩。
統(tǒng)計(jì)情況如下:
- Retrofit 0
- okhttp 0
- Butter Knife 0
-
MPAndroidChart 4
-
Android-Universal-Image-Loader 2
-
glide 1
- leakcanary 0
-
EventBus 1
- picasso 0
-
zxing 3
- iosched 0
-
Fresco 1
- lottie-android 0
-
RxAndroid 3
-
libgdx 1
- SlidingMenu 0
-
PhotoView 1
-
android-async-http 1
-
material-dialogs 5
- AndroidUtilCode 0
-
androidannotations 3
-
Material-Animations 1
-
fastjson 5
- ViewPagerIndicator 0
- plaid 0
-
PocketHub 1
-
tinker 4
-
Android-CleanArchitecture 2
- Android-PullToRefresh 0
-
MaterialDesignLibrary 1
我們是篩選容器就是 30個(gè),統(tǒng)計(jì)日期:2017年04月27日(隨著時(shí)間推移灭将,可能略微有變動(dòng))疼鸟。使用標(biāo)簽的有 18個(gè),未使用的有12個(gè)庙曙。 使用概率大約是:60%空镜。如果篩選容器的范圍再大一點(diǎn)可能更多,沒有使用徽章的12個(gè)項(xiàng)目,可能由于歷史原因吴攒,或者個(gè)人原因未使用张抄,但是不管怎么說,使用徽章的人會(huì)越來越多洼怔。
為什么要使用徽章署惯?
徽章 shields
徽章的使用不僅僅是為了裝 B,而是為了讓開源想更高效镣隶。進(jìn)入項(xiàng)目主頁一眼能看出需要的東西极谊,例如該項(xiàng)目能否編譯通過,當(dāng)前最新的版本是什么等安岂。
徽章能突出視野轻猖,github 默認(rèn)給我們展示的是黑白世界,但是通過 徽章域那,將會(huì)得到改變蜕依。重要的信息可以一目了然。
最常用徽章有哪些琉雳?
一份不太靠譜的標(biāo)準(zhǔn)样眠,不過你應(yīng)該掌握:
(PS: 上圖中的圖標(biāo)順序?qū)?yīng)下面的順序)
- jitpack 徽章:JitPack 是一個(gè)倉庫,類似 maven翠肘,binary, 主要是幫我們生產(chǎn) android 項(xiàng)目的 aar or jar 的平臺(tái)檐束。基于 GitHub束倍,可以很方便將 library 發(fā)布到遠(yuǎn)程被丧,然后可以用 gradle 依賴到任何一個(gè)項(xiàng)目中。
- travis-ci 徽章:Travis-CI 是一個(gè)線托管的CI服務(wù)绪妹,不需要自己搭服務(wù)器甥桂,在網(wǎng)頁上點(diǎn)幾下就好,用起來更方便邮旷。最重要的是黄选,它對(duì)開源項(xiàng)目是免費(fèi)的。
- circle-ci 徽章:Cricle-CI 是也一個(gè)線托管的CI服務(wù)婶肩,和上面相同办陷,不過這個(gè)相對(duì)來說比較好用一些,可以 SSH 到測(cè)試容器律歼,方便在出問題的時(shí)候上去調(diào)試找原因民镜,界面相對(duì)好看一些。
- codecov 徽章:Codecov 是開源的測(cè)試結(jié)果展示平臺(tái)险毁,將測(cè)試結(jié)果可視化制圈。Github上許多開源項(xiàng)目都使用了Codecov來展示單測(cè)結(jié)果们童。
- api level 徽章:Api-Leavel 是 android-arsenal 網(wǎng)站提供的 android api 展示的徽章【校可以在項(xiàng)目主頁中直接使用 badge 的內(nèi)容慧库。
- codacy 徽章:編程代碼自動(dòng)審查服務(wù)平臺(tái)。幫助開發(fā)者及時(shí)發(fā)現(xiàn)代碼中的 bug亥鬓,提升軟件運(yùn)行質(zhì)量,主要包括代碼質(zhì)量域庇、語法規(guī)范嵌戈、功能可用性方面的檢查。
- 個(gè)人專屬 徽章:shiedls 根據(jù)自己的需求可以定制很多樣式的徽章听皿,全憑個(gè)人 愛好熟呛,怎么開心怎么玩。
環(huán)境說明
這里我用一個(gè)簡單的 android 項(xiàng)目來做一個(gè)說明尉姨,其他語言也是可以的庵朝,這里僅僅展示一個(gè)實(shí)例。
我的本機(jī)的android環(huán)境說明如下:
- Mac
- Android Studio 2.4 preview 4
- gradle: 3.4.1
- java: 1.8.0_73
- buildToolsVersion: 25.0.2
- compileSdkVersion: 25
- minSdkVersion: 14
- support: appcompat-v7:25.1.0
- constraint: constraint-layout:1.0.0-beta4
- classpath: com.android.tools.build:gradle:2.4.0-alpha4
用其他版本或者環(huán)境也是可以的, 這里只是說明又厉。 如果任何遇到問題九府,可以在我的博客里面留言,聯(lián)系詳情為:http://www.gdky005.com/about/ 因?yàn)樵撐牡耐暾嬲娴暮荛L覆致,涉及到很多的技術(shù)侄旬,所以專門設(shè)立了 QQ群:621094999, 有疑問或非常感興趣的同學(xué)煌妈,可以來次探討儡羔,也許一些新功能就是你們發(fā)覺的呢。 (PS:本應(yīng)該在文末尾添加聯(lián)系方式的璧诵,但是無奈汰蜘,很多網(wǎng)站都有爬蟲系統(tǒng),好不容易寫的文章就被爬走了之宿,導(dǎo)致很多小伙伴遇到問題后族操,各種留言,但是我就是看不到比被,所以這次采取特殊方式坪创,見諒哈)
JitPack 的使用
官網(wǎng): https://jitpack.io
創(chuàng)建 Android Library
-
在 AS 中創(chuàng)建標(biāo)準(zhǔn)的 android 項(xiàng)目:
-
創(chuàng)建 Library:
- 創(chuàng)建 badge library 成功。
配置相關(guān)文件
進(jìn)入 jitpack android 可以看到 jitpack 為我們提供的文檔幫助姐赡。
-
在項(xiàng)目的根目錄下的 build.gradle 文件中添加:
-
在 library 下的 build.gradle 中添加:
莱预, 對(duì)應(yīng)官網(wǎng)中說的 『group='com.github.YourUsername’』, 其實(shí)可以不寫项滑,寫不寫都會(huì)自動(dòng)生成依沮。 即使你寫成了別的,最終還是以這樣的格式輸出。
AndroidBadge 中 的 build.gradle :
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' // Add this line
AndroidBadge 里面的 badge (library) :
apply plugin: 'com.github.dcendents.android-maven'
發(fā)布到 Github (這里直接展示 AS 中的界面圖形操作危喉,會(huì)命令行的同學(xué)隨意)
-
登錄自己的 github 賬號(hào)宋渔,然后創(chuàng)建一個(gè) 項(xiàng)目,在首頁右邊能看到:
-
點(diǎn)擊 大綠色 按鈕辜限,并填寫信息:
皇拣。 那個(gè)協(xié)議,你們隨意薄嫡,這里只是演示氧急。
-
創(chuàng)建成功后:
,拷貝當(dāng)前項(xiàng)目地址毫深。
-
在 AS 的項(xiàng)目中創(chuàng)建 git 倉庫:
-
現(xiàn)在我們給 library 的 badge 項(xiàng)目添加一個(gè)工具類:
巡球, 并提交到 github言沐。
Github 打 release or tag
創(chuàng)建第一個(gè) release 分支:
發(fā)布成功以后就能看到:
一般用 release 就可以了, 在適當(dāng)?shù)臅r(shí)候 用 tag酣栈。
在 JitPack 上生成 aar
- 進(jìn)入 https://jitpack.io/险胰。
- 將 github 的項(xiàng)目地址: https://github.com/gdky005/AndroidBadge, 直接拷貝 到 jitpack 網(wǎng)頁中的文本框中矿筝。
-
點(diǎn)擊 Look Up 后:
- 如果是紅色的鼻疮,說明有錯(cuò)誤,點(diǎn)開查看琳轿,修改后重新構(gòu)建判沟。
在 app Demo 中測(cè)試是否生效
點(diǎn)擊 get 后耿芹,能看到:-
給項(xiàng)目根目錄下的 build.gradle 添加:
-
給app 項(xiàng)目里面的 build.gradle 添加:
AndroidBadge 中 的 build.gradle :
maven { url 'https://jitpack.io' }
AndroidBadge 里面的 app 的 build.gradle :
compile 'com.github.gdky005:AndroidBadge:v1.0.0'
好的,現(xiàn)在我們已經(jīng)添加成功了挪哄,在 MainActivity 里面是是吧吧秕,看能否調(diào)到之前在 library 里面的寫的 Utils.getVersion()。很高興的是我們調(diào)出來了:在項(xiàng)目的最底下也能看到:
問題來了砸彬,我們修改library 后也能調(diào)用到嗎?
讓咱們一起試試吧:
-
修改 badge 項(xiàng)目中的 1.0.0 為 1.0.1 :
斯入。
-
提交代碼后砂碉,push 到 github。 提交成功以后咱扣,我們重復(fù)上面的打 release 步驟
-
然后再去 jitpack 上看看:
-
發(fā)布成功后涵防,我們?nèi)?app 里面試試项栏。
-
同步后族阅,直接運(yùn)行 app。非常好,我們的修改的東西已經(jīng)變了:
笨奠。
至此, jitpack 基本也差不多了波势,但是貌似缺少了最重要的一點(diǎn)吧或辖。
jitpack 的徽章怎么弄
還是在剛剛的 jitpack 界面,只是我們把 頁面拉倒底部橙依。-
拷貝內(nèi)容:
-
打開 github 的 AndroidBridge 項(xiàng)目:
女责,點(diǎn)擊該文件。
-
讓我們?cè)诰€編輯下:
-
給 github 中的 這個(gè) readme.md 文件添加點(diǎn)東西吧创译。
-
讓我們 保存下抵知。
- 然后回到項(xiàng)目首頁看看:
Travis CI 的使用
官網(wǎng): http://travis-ci.org/
ps: 這個(gè)是公開的刷喜,如果需要使用私有的,請(qǐng)使用 .com 域名立砸。
需要提醒的是:每次提交代碼后都會(huì)重新下載需要的資源文件哦掖疮,所以時(shí)間很長,耐心等待吧颗祝。
TravisCI 有什么用氮墨?
travis-ci 就是 自動(dòng)化 CI 工具纺蛆,類似于大公司經(jīng)常使用的 Jenkins,但是 travis-ci 是在云端的规揪,而是支持 github, 還免費(fèi)桥氏,我們可以 用 travis-ci 做很多的事情,不僅僅是 編譯看 項(xiàng)目有沒有問題猛铅。例如在項(xiàng)目構(gòu)建結(jié)束以后字支,我們可以打包,并發(fā)布 apk 到都 蒲公英奸忽, fir堕伪,也可以用郵件通知給相關(guān)的開發(fā)人員和業(yè)務(wù)任務(wù)。 做一些簡單處理栗菜,輕輕松松欠雌。這部分內(nèi)容到后面盡快整理,在寫一篇疙筹。
添加 github 項(xiàng)目到 travis-ci
-
進(jìn)入 Travis 官網(wǎng)后富俄,使用 GitHub 賬號(hào) 登錄,成功后:
而咆。
-
點(diǎn)擊 加號(hào) 霍比,能看到你 GitHub 里面的所有:
, 如果沒有項(xiàng)目或者沒有你新建的項(xiàng)目暴备,請(qǐng)點(diǎn)擊右上方的 Sync account 按鈕悠瞬。
-
點(diǎn)擊這里:
-
默認(rèn)是空的:
在 項(xiàng)目中添加 travis-ci 需要的 .travis.yml 文件
-
在項(xiàng)目根目錄下直接創(chuàng)建 一個(gè) .travis.yml 的文件浅妆。
-
直接在文件里面添加代碼:
.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
因?yàn)樵撐暮荛L很長,所以暫時(shí)就不解釋具體含義了障癌,可以看看官方文檔凌外。
push 項(xiàng)目到 github, travis-ci 自動(dòng)監(jiān)測(cè)構(gòu)建
-
提交到代碼,并 push 到 github混弥。會(huì)自動(dòng)觸發(fā) Travis 的自動(dòng)構(gòu)建趴乡。
-
下面黑色部分是構(gòu)建的過程:
說明我們已經(jīng)構(gòu)建成功了胖齐。
.travis.yml 需要注意的地方
初次使用 Travis 的試試玻淑,總遇到 說 android 的一些協(xié)議未接受而構(gòu)建失敗,導(dǎo)致耗費(fèi)了一兩天呀伙,曾經(jīng)一度想放棄补履,但是最終堅(jiān)持了下來,通過各種搜索剿另,摸索箫锤,猜測(cè),終于搞定雨女。其實(shí)最初的項(xiàng)目是這個(gè):https://github.com/gdky005/TestJitpack 谚攒,里面有很多辛酸史記錄,從提交記錄能看得出來氛堕,有興趣的可以研究研究馏臭,也許能解決你現(xiàn)在的問題。
Travis CI 協(xié)議問題解決方法: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
激動(dòng)的時(shí)刻再次到來讼稚,讓我們找找徽章在哪里呢括儒?
并復(fù)制上。
同樣如上修改 readme.md乱灵。蝉稳,這里需要說明的是,如果換成把敞,圖標(biāo)也會(huì)換行哦。這樣寫就能保證所有的圖標(biāo)在一行了憨栽。
回到項(xiàng)目首頁以后就能發(fā)現(xiàn):添加 Travis 徽章成功唧瘾。
Bye the way! 上面是最初級(jí)的構(gòu)建過程,如果遇到單元測(cè)試就不行了别凤,還得參考 我的開源項(xiàng)目 TestJitpack饰序。 不過有點(diǎn)亂,后面整理下闻妓。
Circle CI 的使用
官網(wǎng): https://circleci.com/
Circle CI 和 Travis CI 有什么區(qū)別菌羽?需要一起使用嗎?
Circle CI 相對(duì)來說比 Travis CI 好一些,至少界面上來說哈注祖。還提供 ssh 的連接猾蒂,構(gòu)建過程相對(duì)來說 比較透明直觀。例如:Travis CI 的文檔資料相對(duì) Circle CI 來說 比較多是晨, Circle CI 資料少之又少肚菠。
Travis CI 的使用率還是很高的, 不過 Circle CI 相對(duì)來說比較 年輕化罩缴,符合主流的科技感蚊逢,更智能。
說到是否需要一起使用箫章,其實(shí)都行烙荷,不過我在觀察 github 主流項(xiàng)目的時(shí)候 有不少項(xiàng)目都是同時(shí)使用的,多一個(gè)技能總沒有壞處吧檬寂。其實(shí)會(huì)了 Travis CI终抽,在加 Circle CI 真是簡單不少呢,只是基本語法不太一樣桶至。
添加項(xiàng)目到 Circle CI
-
登錄主頁面:
昼伴, 在 project 里面自己的賬號(hào)下搜索剛創(chuàng)建的項(xiàng)目。
-
一般直接選擇 Ubuntu 即可:
-
能看到:
镣屹, 但是這次肯定會(huì)失敗圃郊,因?yàn)槲覀冞€沒有添加 Circle 需要的文件呢。
在 項(xiàng)目中添加 Circle CI 需要的 circle.yml 文件
- 在項(xiàng)目的根目錄下 添加 circle.yml 文件女蜈;
-
添加 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 項(xiàng)目到 github, Circle CI 自動(dòng)監(jiān)測(cè)構(gòu)建
- 提交代碼后持舆,發(fā)布到 github,Circle CI 會(huì)自動(dòng)執(zhí)行鞭光。
-
-
構(gòu)建中的一些步驟:
史辙, 相對(duì) Travis 來說展示更直觀汹买。
-
看到
說明構(gòu)建成功。
添加 Circle CI 徽章到 github
我們?cè)賮戆?Circle CI 的徽章找到聊倔,并添加到我們的 github 上去吧晦毙。非常 happy, 已經(jīng)添加成功了耙蔑。
接下來添加什么呢见妒?
Github上許多開源項(xiàng)目都使用了Codecov來展示單元測(cè)試結(jié)果, 就它了甸陌。
Codecov 的使用
根據(jù)文中的指示:我們能看到一個(gè)開源的 github 項(xiàng)目 https://github.com/codecov/example-android须揣, 不過看起來點(diǎn)暈暈的盐股,于是摸索了一段時(shí)間。
我們之后都直接使用 Trivas CI 構(gòu)建了耻卡。
添加項(xiàng)目就不說了疯汁,進(jìn)入后,點(diǎn)擊 project changes, 找到自己的項(xiàng)目:卵酪,等生產(chǎn)報(bào)告后幌蚊,進(jìn)入該網(wǎng)站就能看見結(jié)果。
利用 Jacoco 生成報(bào)告
Codecov不支持自己生成Android的測(cè)試覆蓋率報(bào)告溃卡,它能做的是接收J(rèn)acoco生成的報(bào)告并進(jìn)行可視化
1) 在 app 的 build.gradle 文件中 添加依賴
//Jacoco 生成報(bào)告的依賴
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'
})
-
在 需要構(gòu)建測(cè)試覆蓋率報(bào)告的Module (AndroidBadge 項(xiàng)目中的 app) 的gradle文件中設(shè)置溢豆。
debug{
testCoverageEnabled true
} -
可以在嘗試在本地生成報(bào)告:
./gradlew :app:createDebugAndroidTestCoverageReport 生成測(cè)試報(bào)告。 app 就是咱們項(xiàng)目中要測(cè)試的 module
測(cè)試報(bào)告地址:app/build/reports/coverage/debug/index.html瘸羡。
上報(bào)數(shù)據(jù)給 Codecov
使用Github賬號(hào)登錄 https://codecov.io/沫换, 并提供授權(quán)給該應(yīng)用。
-
在.travis.yml文件中添加命令將測(cè)試覆蓋率報(bào)告上傳給Codecov最铁。
after_success:
- bash <(curl -s https://codecov.io/bash)
Codecov 需要用到 單元測(cè)試讯赏,所以必須要在 配置文件中添加模擬器
因?yàn)橹靶薷倪^很多次,過程很繁瑣冷尉,直接給配置文件了漱挎,相信大家一眼就能看出來。
完整的配置文件是:
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 總結(jié)
Travis-CI 對(duì) android 的單元測(cè)試支持不是很好雀哨,因?yàn)樾枰_啟虛擬機(jī)磕谅,開啟這個(gè)過程就得10分鐘(我的測(cè)試時(shí)間),很耗費(fèi)時(shí)間雾棺。有時(shí)候也連接不上膊夹,一次跑下來估計(jì)得個(gè) 20分鐘左右吧。所以捌浩,穩(wěn)定性確實(shí)不是很高放刨。如果不做單元測(cè)試,而只是做發(fā)布之類的尸饺,穩(wěn)定性還是高的进统。
單元測(cè)試應(yīng)都會(huì)吧, 這里檢測(cè)的標(biāo)準(zhǔn)就是說 每個(gè)類和方法都必須檢測(cè)到浪听,否則就算沒有覆蓋螟碎。我這里也就簡單在項(xiàng)目中寫過例子,剩下的你們自己玩吧迹栓。**所以 要不要使用單元測(cè)試 還是根據(jù)項(xiàng)目決定吧掉分。 **
獲取 codecov 的徽章
Api_Level 的使用
讓 codecov 慢慢構(gòu)建吧,我們先繼續(xù)。
官網(wǎng):https://android-arsenal.com/api
Api_Level 有什么用酥郭?
Api_Level 是 arsenal 網(wǎng)站給各位開發(fā)者的一個(gè)福利尔崔,我們的 android 開源項(xiàng)目一般都有一個(gè)最低的構(gòu)建版本。平時(shí)我們都是在 md 文件中寫上 支持版本是 14+等很多樣式褥民,但是 不夠醒目季春,有了 Api_Level 后,打開開源項(xiàng)目主頁就知道消返,最低版本是多少载弄。 不用看文檔也能明白,輕松不少撵颊。 對(duì)應(yīng)的 api 的一些特性和修改也能在這里展現(xiàn)宇攻。
Api_Level 怎么玩?
如果你的開源項(xiàng)目最低支持版本是:14倡勇,那么就選擇這里:codacy 的使用
官網(wǎng): https://www.codacy.com
codacy 是什么妻熊?
codacy 編程代碼自動(dòng)審查服務(wù)平臺(tái)夸浅,可以幫我們分析存在的問題 或者說是 bug,主要包括代碼質(zhì)量、語法規(guī)范扔役、功能可用性方面的檢查帆喇。
codacy 怎么使用?
進(jìn)入官網(wǎng)亿胸,添加自己的需要的 project坯钦。完成后,等待一段時(shí)間就好了侈玄,會(huì)給你發(fā)郵件通知婉刀,已經(jīng)完成。
完成后的效果是:序仙,咱們的這個(gè)項(xiàng)目評(píng)級(jí)是 B突颊。
codacy 徽章呢?
拷貝下來诱桂,手動(dòng)放到 咱們的項(xiàng)目的 md 文檔中把洋丐。比較放心一些,如果點(diǎn)擊后面的 add badge ,會(huì)自動(dòng)加到項(xiàng)目中挥等,需要我們 pull request 里面處理下。
搞定堤尾。
生成個(gè)性徽章
官網(wǎng): https://shields.io/
有什么用肝劲?
彰顯個(gè)人魅力,體現(xiàn)某種功能。例如咱們做一個(gè)跳轉(zhuǎn)到我的博客的 個(gè)人徽章辞槐。
怎么玩掷漱?
滾動(dòng)網(wǎng)頁到最下面:在對(duì)應(yīng)的地方填寫相應(yīng)的東西(也支持中文哦), 完成后點(diǎn)擊后面的 Make Badge 按鈕試試看榄檬。
我想我的個(gè)人圖標(biāo)是這種淺藍(lán)色:卜范,那么我就在 color 中直接寫:7AD6FD
點(diǎn)擊生成 一個(gè)地址, 先保存下面鹿榜。
這個(gè)原理是什么呢海雪? (回答最開始的問題)
徽章的格式即是 markdown 的格式:
[![](B)\](D)
A 表示的頁面中需要顯示的內(nèi)容, B 表示的是圖片的地址舱殿,D 表示的是點(diǎn)擊后需要跳轉(zhuǎn)的鏈接的地址奥裸。
合成我的個(gè)人專屬圖標(biāo)吧
圖片地址是上面存下來的。 前面顯示內(nèi)容:作者沪袭。按照上面的規(guī)范出來的結(jié)果就是:
[![](https:\//img.shields.io\/badge\/%E4%BD%9C%E8%80%85-gdky005-7AD6FD.svg)\](http:\//www.gdky005.com)
把這段代碼 粘貼到 我們的 md 文檔中湾宙,個(gè)性專屬徽章就出來了,而且點(diǎn)擊后能到我們想去的地方冈绊。
很酷吧侠鳄,其實(shí)還可以做很多這樣的事情。
本文的 中的 項(xiàng)目地址是: https://github.com/gdky005/AndroidBadge
需要逐步了解項(xiàng)目的過程或者 根據(jù)步驟出現(xiàn)問題的話死宣,可以check 對(duì)應(yīng)的節(jié)點(diǎn)畦攘,看看代碼是否不同,然后自行修改十电,我特意保存了該進(jìn)度知押。如果下圖中 git提交的記錄:
相信小伙伴們肯定能做出更有意思的東西,到時(shí)候記得與我和大家分享鹃骂,比較有特色的台盯,我會(huì)將你們的鏈接掛載到 github 項(xiàng)目里面。
因?yàn)樵撐恼娴暮荛L畏线,涉及到很多的技術(shù)静盅,所以專門設(shè)立了 QQ群:621094999, 有需要幫助或許分享新技能的小伙伴請(qǐng)進(jìn)入寝殴。
本文完整地址請(qǐng)?jiān)?我的博客 里面查看蒿叠,會(huì)修復(fù) 文章存在的問題,并補(bǔ)充一些相關(guān)細(xì)節(jié)蚣常。針對(duì) 小伙伴們提出的問題市咽,將在博客中修改和增加。如果大家覺得不錯(cuò)抵蚊,并且很喜歡的話施绎,麻煩 GitHub 中 start 下溯革,不勝感激。
最后真想說一句
咱們不玩虛的谷醉,玩點(diǎn)有技術(shù)含量的東西致稀。