Android 项目的 Jenkins 参数化构建

需求描述

项目分为三种类型构建:

  1. 测试环境构建 debug
  2. 测试环境构建后上传内测平台 (fir.im)
  3. 发布版构建 release

三种构建类型在完成后都保存构建输出的 apk,只有在类型 2 完成后执行上传到内测平台操作

使用 nexus 搭建 maven 私有仓库和 gradle maven 插件的配置

现在在 Android 开发特别是 Android Studio 普及依赖之后,gradle 是日常需要使用的必不可少的工具之一,使用 gradle 构建 Android 项目时一个重要的功能就是管理项目的依赖。

Let's Encrypt

终于在免费方案的前提下搞定了博客的 HTTPS。之前试过 CloudFlare 的 CDN + HTTPS 的方案,最终因为速度实在太感人以及和 DNS 上和邮箱有冲突就放弃了;后来 Coding.net 也开放了自定义域名的 HTTPS 服务,试了以后感觉不错,但后来发现在 Android 设备上基本证书不可用,反馈了很久却迟迟没有解决。前两天又租了个乞丐版的搬瓦工 VPS,尝试了一下 Let’s Encrypt 感觉很方便,就试着自己搞了一下,恰好有发现 GitLab 的 pages 服务可以自己配置证书,所以借着 VPS 生成了一个证书然后配置在 GitLab 上。虽然速度貌似不如 Coding 的快,而且 ping 也被 GitLab 给屏蔽了,但总体还可以接受,暂时就先用这个方案了。

顺便解释下如果国内的朋友感觉访问本站太慢,那是因为用了 disqus 评论插件的问题,因为国内同类产品用了后实在不满意,最终还是选用了 disqus,需要评论请自备梯子。

UPDATE 2016 10 25:后来想起来很久之前买过一次 SSL 证书一直没用,打开看还有一个多月就过期了,但是试着激活了一下发现是从激活日开始算起的,还能再用一年,所以现在换成这个了。

升级 macOS Sierra 后 Chrome 打开 HTTPS 的网页出错的问题

升级 macOS 后,Chrome 访问 HTTPS 的网页总是一闪而过一个错误,然后才会加载成功。在网上看到别人说可能和支付宝的服务有关,移除之后就正常了。移除命令:

sudo launchctl remove com.alipay.DispatcherService

更彻底一些的:

sudo rm -rf /Library/Application\ Support/Alipay /Library/LaunchDaemons/com.alipay.DispatcherService.plist ~/Library/LaunchAgents/com.alipay.adaptor.plist -rf ~/Library/LaunchAgents/com.alipay.refresher.plist ~/Library/Internet\ Plug-Ins/aliedit.plugin ~/Library/Internet\ Plug-Ins/npalicdo.plugin

Android App 开发环境和线上环境共存的 gradle 配置小技巧

前段时间考虑过一个问题:Android 开发者在供职公司开发一个 app,但是又需要在下班后使用这个 app 怎么办?一般公司的服务端都会区分线上和线下环境,在开发时使用开发的环境以免脏数据污染线上的环境,但开发环境收不到真实消息的推送,而下班后每次都卸载重装的话感觉又有些蛋疼。今天想到可以用设置 flavor 的方式解决这一痛点,分享一下这个方案的配置过程。

搭建 jenkins 构建 Android 项目

之前用过 Flow.ci、Travis 等公共的 CI 工具感觉很方便,但毕竟源码在别人那里多少有点别扭。Jenkins 是一个免费的高度可定制的 CI 开源项目,现在的公司使用它来构建 Android 项目,所以也来试一试,记录下搭建的过程以及遇到的问题,供自己和需要的人参考。

ArrayList 是线程不安全的

发现自己在代码中经常会犯一个常识性错误:在多线程环境下使用同一个 ArrayList。ArrayList 是线程不安全的,不安全性主要表现在元素的操作互相没有互斥性,例如在线程1中添加了元素 a,而在线程2 中查询该 list 的长度时,却可能发现 list 长度为 1,而元素只有一个 null。

Android 启动模式(LaunchMode)

Android 中 Activity 启动模式决定了 Activity 启动时对 Activity 栈的行为,在推送打开、拦截登录等常见的业务逻辑下很实用。这里再简单总结一下。

多版本 Android Studio 共存[译]

现在同时安装多个版本的 Android Studio 已经成为可能。当我们提供 Canary 版本(或者 Beta 版本)的下一版本 IDE 时,你也许想安装这个新版本但并不想替换掉你原有的稳定版。

Dagger 2 中 Scope 用法

Dagger 2 简介

Dagger 2 是 Google 对 Square 下的项目 Dagger fork 出来的 Android IoC 框架,替换了原 Dagger 的反射使用代码生成进行注入,并添加了一些新特性。

@Scope

Dagger 1 中对注入对象的的注解只有 Singleton,而 Dagger 2 中可以使用 Scope 自定义注解来指定注入对象的作用域,来实现局部单例的效果。看了很多介绍文档都不是很清楚,使用 find usage 发现并没有生成代码对注解进行监听,推测 Scope 是影响了代码生成的结果。这里举个例子来说明如何使用 Scope 注解。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×