转自:打造一个高逼格的android开源项目html
在平时的开发过程当中,咱们常常会查阅不少的资料,最常参考的是 github 的开源项目。一般在项目的主页面能看到项目的简介和基本使用,而且时不时能看到页面汇中有好多的彩色标签,看起来很酷,很专业,颇有逼格,能提高不少的好感度。java
本文又是一篇很长的文章,如以前写的某篇文章同样,基本是一口气连续两三天的写。写啊写啊写,不知不觉就写了好多,其实有不少是素材图片,务必作到每一个细节我都实践一遍。linux
考虑到同窗们的时间有限,各取所需,因此按照个人惯例,首先有一篇完整版,其次,有一篇缩略版。但是此次缩略版很差作,因此综合考虑,把每一个单独的知识点拆分出来,抓住重点,尽可能让你们看的开心。android
这里须要提醒的是:ios
看了完整版就不用看精简集合了,内容都同样。完整版具备必定的连贯性。
精简版就看的清爽哈,以备本身玩的时候,快速查找相关资料和步骤。nginx
这里优先汇总下:git
完整版:
打造一个高逼格的android开源项目——小白全攻略github
精简集合版:
徽章系列1: Top 30 android 开源项目徽章
徽章系列2:JitPack 的使用
徽章系列3: Travis CI 的使用
徽章系列4: Circle CI 的使用
徽章系列5: Codecov 的使用
徽章系列6: Api_Level 的使用
徽章系列7: codacy 的使用
徽章系列8:生成个性徽章面试
总分类:
徽章(shields )系列文章总分类docker
github 地址:
徽章项目 Demo github 地址:
https://github.com/gdky005/AndroidBadge
下面正文,正式开始。
咱们以最流行的 android 开源项目 MPAndroidChart 为例来看看。
下面咱们将 这些标签称之为 徽章 (shields)。
咱们尝试在 github 里面搜索 以 android 关键字 开发语言为 java 的开源项目。
统计状况以下:
咱们是筛选容器就是 30个,统计日期:2017年04月27日(随着时间推移,可能略微有变更)。使用标签的有 18个,未使用的有12个。 使用几率大约是:60%。若是筛选容器的范围再大一点可能更多,没有使用徽章的12个项目,可能因为历史缘由,或者我的缘由未使用,可是无论怎么说,使用徽章的人会愈来愈多。
徽章 shields
徽章的使用不只仅是为了装 B,而是为了让开源想更高效。进入项目主页一眼能看出须要的东西,例如该项目可否编译经过,当前最新的版本是什么等。
徽章能突出视野,github 默认给咱们展现的是黑白世界,可是经过 徽章,将会获得改变。重要的信息能够一目了然。
一份不太靠谱的标准,不过你应该掌握:
(PS: 上图中的图标顺序对应下面的顺序)
这里我用一个简单的 android 项目来作一个说明,其余语言也是能够的,这里仅仅展现一个实例。
个人本机的android环境说明以下:
用其余版本或者环境也是能够的, 这里只是说明。 若是任何遇到问题,能够在个人博客里面留言,联系详情为:http://www.gdky005.com/about/ 由于该文的完整版真的很长,涉及到不少的技术,因此专门设立了 QQ群:621094999, 有疑问或很是感兴趣的同窗,能够来次探讨,也许一些新功能就是大家发觉的呢。 (PS:本应该在文末尾添加联系方式的,可是无奈,不少网站都有爬虫系统,好不容易写的文章就被爬走了,致使不少小伙伴遇到问题后,各类留言,可是我就是看不到,因此此次采起特殊方式,见谅哈)
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'
建立第一个 release 分支:
发布成功之后就能看到:
通常用 release 就能够了, 在适当的时候 用 tag。
点击 get 后,能看到:
AndroidBadge 中 的 build.gradle :
maven { url 'https://jitpack.io' }
AndroidBadge 里面的 app 的 build.gradle :
compile 'com.github.gdky005:AndroidBadge:v1.0.0'
好的,如今咱们已经添加成功了,在 MainActivity 里面是是吧,看可否调到以前在 library 里面的写的 Utils.getVersion()。很高兴的是咱们调出来了:
在项目的最底下也能看到:
。 运行 app 项目:
让我们一块儿试试吧:
至此, jitpack 基本也差很少了,可是貌似缺乏了最重要的一点吧。
仍是在刚刚的 jitpack 界面,只是咱们把 页面拉倒底部。
点击后:
是否是看到了熟悉的 md 文档的格式呢? 看不懂也不要紧,下面会专门讲解。
官网: http://travis-ci.org/
ps: 这个是公开的,若是须要使用私有的,请使用 .com 域名。
须要提醒的是:每次提交代码后都会从新下载须要的资源文件哦,因此时间很长,耐心等待吧。
travis-ci 就是 自动化 CI 工具,相似于大公司常用的 Jenkins,可是 travis-ci 是在云端的,而是支持 github, 还免费,咱们能够 用 travis-ci 作不少的事情,不只仅是 编译看 项目有没有问题。例如在项目构建结束之后,咱们能够打包,并发布 apk 到都 蒲公英, fir,也能够用邮件通知给相关的开发人员和业务任务。 作一些简单处理,轻轻松松。这部份内容到后面尽快整理,在写一篇。
.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
由于该文很长很长,因此暂时就不解释具体含义了,能够看看官方文档。
喝一杯咖啡,慢慢等待吧,最难熬的时候已通过去,此刻是享受的时候了。
回到首页刷新后,能看到:
说明咱们已经构建成功了。
初次使用 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"
激动的时刻再次到来,让咱们找找徽章在哪里呢?
让咱们来选择 markdonw 格式:
并复制上。
一样如上修改 readme.md。
加空格后,直接贴上去:
,这里须要说明的是,若是换成,图标也会换行哦。这样写就能保证全部的图标在一行了。
回到项目首页之后就能发现:
添加 Travis 徽章成功。
Bye the way! 上面是最初级的构建过程,若是遇到单元测试就不行了,还得参考 个人开源项目 TestJitpack。 不过有点乱,后面整理下。
Circle CI 相对来讲比 Travis CI 好一些,至少界面上来讲哈。还提供 ssh 的链接,构建过程相对来讲 比较透明直观。例如:
Travis CI 的文档资料相对 Circle CI 来讲 比较多, Circle CI 资料少之又少。
Travis CI 的使用率仍是很高的, 不过 Circle CI 相对来讲比较 年轻化,符合主流的科技感,更智能。
说到是否须要一块儿使用,其实都行,不过我在观察 github 主流项目的时候 有很多项目都是同时使用的,多一个技能总没有坏处吧。其实会了 Travis CI,在加 Circle CI 真是简单很多呢,只是基本语法不太同样。
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
咱们再来把 Circle CI 的徽章找到,并添加到咱们的 github 上去吧。
咱们把 徽章的 markdown 连接拷贝下来放入到咱们的 主项目页面的里面。
回项目主页刷新后:
很是 happy, 已经添加成功了。
Github上许多开源项目都使用了Codecov来展现单元测试结果, 就它了。
根据文中的指示:咱们能看到一个开源的 github 项目https://github.com/codecov/example-android, 不过看起来点晕晕的,因而摸索了一段时间。
咱们以后都直接使用 Trivas CI 构建了。
添加项目就不说了,进入后,点击 project changes, 找到本身的项目:
,等生产报告后,进入该网站就能看见结果。
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。
在.travis.yml文件中添加命令将测试覆盖率报告上传给Codecov。
after_success:
- bash <(curl -s https://codecov.io/bash)
由于以前修改过不少次,过程很繁琐,直接给配置文件了,相信你们一眼就能看出来。
完整的配置文件是:
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)
Travis-CI 对 android 的单元测试支持不是很好,由于须要开启虚拟机,开启这个过程就得10分钟(个人测试时间),很耗费时间。有时候也链接不上,一次跑下来估计得个 20分钟左右吧。因此,稳定性确实不是很高。若是不作单元测试,而只是作发布之类的,稳定性仍是高的。
单元测试应都会吧, 这里检测的标准就是说 每一个类和方法都必须检测到,不然就算没有覆盖。我这里也就简单在项目中写过例子,剩下的大家本身玩吧。
因此 要不要使用单元测试 仍是根据项目决定吧。
让 codecov 慢慢构建吧,咱们先继续。
官网:https://android-arsenal.com/api
Api_Level 是 arsenal 网站给各位开发者的一个福利,咱们的 android 开源项目通常都有一个最低的构建版本。平时咱们都是在 md 文件中写上 支持版本是 14+等不少样式,可是 不够醒目,有了 Api_Level 后,打开开源项目主页就知道,最低版本是多少。 不用看文档也能明白,轻松很多。 对应的 api 的一些特性和修改也能在这里展示。
若是你的开源项目最低支持版本是:14,那么就选择这里:
把这个拷贝下来,放入咱们的 md 文档中吧。
codacy 编程代码自动审查服务平台,能够帮咱们分析存在的问题 或者说是 bug,主要包括代码质量、语法规范、功能可用性方面的检查。
进入官网,添加本身的须要的 project。
完成后,等待一段时间就行了,会给你发邮件通知,已经完成。
完成后的效果是:
,我们的这个项目评级是 B。
拷贝下来,手动放到 我们的项目的 md 文档中把。比较放心一些,若是点击后面的 add badge ,会自动加到项目中,须要咱们 pull request 里面处理下。
搞定。
彰显我的魅力,体现某种功能。例如我们作一个跳转到个人博客的 我的徽章。
滚动网页到最下面:
在对应的地方填写相应的东西(也支持中文哦), 完成后点击后面的 Make Badge 按钮试试看。
我想个人我的图标是这种浅蓝色:
,那么我就在 color 中直接写:7AD6FD
点击生成 一个地址, 先保存下面。
徽章的格式便是 markdown 的格式:
[\](D)
A 表示的页面中须要显示的内容, B 表示的是图片的地址,D 表示的是点击后须要跳转的连接的地址。
图片地址是上面存下来的。 前面显示内容:做者。按照上面的规范出来的结果就是:
[\](http:\//www.gdky005.com)
把这段代码 粘贴到 咱们的 md 文档中,个性专属徽章就出来了,并且点击后能到咱们想去的地方。
很酷吧,其实还能够作不少这样的事情。
本文的 中的 项目地址是: https://github.com/gdky005/AndroidBadge
须要逐步了解项目的过程或者 根据步骤出现问题的话,能够check 对应的节点,看看代码是否不一样,而后自行修改,我特地保存了该进度。若是下图中 git提交的记录:
相信小伙伴们确定能作出更有意思的东西,到时候记得与我和你们分享,比较有特点的,我会将大家的连接挂载到 github 项目里面。
由于该文真的很长,涉及到不少的技术,因此专门设立了 QQ群:621094999, 有须要帮助或许分享新技能的小伙伴请进入。
本文完整地址请在 个人博客 里面查看,会修复 文章存在的问题,并补充一些相关细节。针对 小伙伴们提出的问题,将在博客中修改和增长。若是你们以为不错,而且很喜欢的话,麻烦 GitHub 中 start 下,不胜感激。
我们不玩虚的,玩点有技术含量的东西。