[一周阅读清单] Gradle、CI、阅读、工具推荐

『一周阅读清单』第三期与大家见面了,上周要说最火的事件应该就是百度和莆田系医院了,网上关于这一事件的文章论点铺天盖地,同时也涌现了很多用来公示和鉴别莆田系医院的工具和插件,文末我会推荐一个Chrome浏览器插件——打开莆田系医院网站,发出警告提醒、显示医院信息。

文章

fir.im weekly - 「 持续集成 」实践教程合集
我们常看到许多团队和开发者分享他们的持续集成实践经验,这里收集了 iOS,Android,PHP ,NodeJS 等项目搭建持续集成的实践,以及一些国内外公司的内部持续集成系统的经验,供大家集中研究,参考借鉴。

5分钟搞定android混淆
混淆是上线前很重要的一个环节(是个脑力兼体力活)Android使用的ProGuard,可以起到压缩,混淆,预检,优化的作用。这篇文章教你掌握正确的写混淆文件的姿势。

使用 MailOtto 做完美预加载
Android预加载的实际案例。

Retrofit2 完全解析探索与okhttp之间的关系
其底层对网络的访问默认也是基于okhttp,不过retrofit非常适合于restful url格式的请求,更多使用注解的方式提供功能。

Android N开发 你需要知道的一切
Android N预览版运行是2016年3月9日,计划于2016年第三季度发布。一共有5个预览版,正常情况下,4到6个星期更新一个预览版,现在第二个预览版已经更新。在前三预览版google提供了一个测试和开发环境,你可以找出你的应用程序跟Android N系统的兼容性.

书单

《深入理解Android内核设计思想》
这本书从计算机操作系统的原理出发讲解了Android系统内核的设计思想,通过我们熟知的一些操作系统和网络知识来类比在Android中的应用。

《深入理解Android之Gradle》
把gradle当做编程框架去学习,这样就不用每次去google如何如何配置脚本了,而且可以根据需要自己写脚本。

开源项目

ExpandableLayout
一个支持子view的展开与折叠的布局。

Tooltip
轻量级的起泡提示。可以根据触发的位置灵活显示。

工具推荐

免费翻墙镜像和工具
科学上网必备。

莆田系医院网站提醒的Chrome插件
本项目的意图是利用open-power-workgroup/Hospital收集汇总与国内一些医疗机构有关的信息,制作出来的一个莆田系医院网站提醒的Chrome插件,供广大寻医问药的患者及家属参考。


FullStackEngineer的公众号,更多分享

Share Comments

[一周阅读清单] RxAndroid、Dagger2、动态配置、小工具推荐

『一周阅读清单』第二期与大家见面了,上周我去参加了中国架构师大会,后面我会将大会中的PPT下载地址贴出来分享给大家~

文章

从案例学RxAndroid开发 (上、下)
上周推荐了一篇讲RxJava的好文,相信你一定很想了解RxJava如何在Android应用中使用它,这篇文章作者从实际案例出发讲解了这一实践过程。

用工厂流水线的方式来理解 RxJava 的概念
RxJava 是款十分强大的工具。但不幸的是如果你之前没有通过“流”的形式写过代码你可能很难理解它并学会如何去用它。因为它十分不同于以往平常的安卓开发,所以我们需要一些比代码更形象的东西去理解它。这篇文章能帮助你更好地理解 RxJava 是如何工作的。

APP实时配置系统&version=11020201&pass_ticket=u%2FZBkB7zNcwIWqm7QWEqFXY9owAqv%2FNZTiIyX7eTHz21%2BNmsm0zUCP%2F9uJ0NpkS0)
随着公司业务的发展,产品上经常需要对APP的逻辑进行更精准快速的变更,通过发布新版本的方式来调整逻辑已经满足不了这一需求了,所以各大公司开始实践动态配置方案,之前天猫无线团队也发表了一篇讲如何设计动态配置中心的文章。

Android:dagger2让你爱不释手
这篇是滴滴出行的牛晓伟发表的一系列文章,总共三篇是目前我看到过最能把Dagger2讲的通俗易懂的文章了,看完确实爱不释手了!

Android单元测试(四):Mock以及Mockito的使用
这一系列文章很详细的讲了如何将单元测试运用到实际开发工作中,虽然很多人说在移动端做单元测试太浪费时间,蘑菇街的邹勇打了个比方我觉得挺形象的:相信很少人会说开车这件事情需要很多时间而是:1. 学习开车需要一定的时间;2. 如果路面不平的话,那么修路需要一定的时间,单元测试也是如此。

开源项目

Depth-LIB-Android-
一个给予view深度的library,同时也包含一些Canvas绘制技术的例子,比如波浪和噪点效果。

PLDroidPlayer
PLDroidPlayer 是一个适用于 Android 平台的音视频播放器 SDK,可高度定制化和二次开发,为 Android 开发者提供了简单、快捷的接口,帮助开发者在 Android 平台上快速开发播放器应用。

agera
谷歌的响应式编程框架,for Android。

小工具推荐

Snapseed
谷歌出品,图片后期处理利器。

Java 开发常用的在线工具
对于一些简单的逻辑验证完全可以在这上面去编写运行。

最后附上中国架构师大会的PPT资料地址:
http://note.youdao.com/share/?id=210afe4bc654668b08f709749b9f07d5&type=note#/


FullStackEngineer的公众号,更多分享

Share Comments

[一周阅读清单] RxJava、Gradle、动态化、小工具推荐

文章

给Android开发者的RxJava详解
其实网上有很多讲RxJava系列的文章但是对于Android开发者来说大部分都不能很清楚的讲明白什么是RxJava以及如何在Android中应用,这篇文章给以上问题做了一个很好的回答,值得一读。

用Retrofit 2简化HTTP请求
这篇文章是Jake Wharton在Droidcon NYC 2015上的一次演讲,他很好的讲解了Retrofit的发展历史以及原理和应用。

团队中的Git实践
这篇文章非常值得一读,讲解了在多人团队开发过程中需要注意的一些细节和概念。

关于Android 进程保活,你所需要知道的一切
这篇文章比较全面的讲解了Android做进程保活的一些场景和对应的方案。

包建强:为什么我说Android插件化从入门到放弃?
最近冒出了很多从入门到XX的书籍,哈哈 不过这篇文章是川哥的一篇采访录,文中包老师讲了些他自己对于Android插件化的一些看法,读后对插件化的概念和发展有了新的认识。

Growth: 全栈增长工程师指南
这篇文章适合对全栈工程师感兴趣的同学阅读,用来科普比较不错。

GRADLE构建最佳实践
这是阿里一位朋友写的,现在网上太多讲gradle的文章了,这篇是看下来感觉比较接地气而且很系统的讲了gradle的一些实用方法。

开源项目

Facebook开源的Redex工具包
FB最近放出了很多优秀的开源项目,总是能让人兴奋其中这个Redex是用来压缩和优化apk的,至于详细的实践过程可以参考我的上篇文章[Android] Facebook Redex 压缩优化Apk实践

Realm
Realm,为移动设备而生 替代 SQLite 和 Core Data。为你省下数周的时间和数千行的代码,帮你创造出更棒的用户体验。正如他官网所描述的又是一个杀手级插件。

Weex
阿里对动态化的又一实践,这次阿里为了避免再出现开源项目无人维护的尴尬场景,于是这次像发布一个产品一样去发布了Weex,Weex支持iOS、安卓、YunOS及Web等多端部署,现已经开放内侧到6月份开源。

小工具推荐

nearlock
这是一款通过蓝牙自动检测距离来锁定解锁mac电脑的应用,亲测很好使不过只有付费版才支持后台运行。

AndroidWiFiADB
这是AS上的一个插件可以帮助你实现无线调试。


FullStackEngineer的公众号,更多分享

Share Comments

[Android] Facebook Redex 压缩优化Apk实践

最近Facebook 又放出了一个用于Android apk字节码优化的工具包——redex,经过redex的优化apk会变的体积更小,速度更快。至于原理大家可以到https://code.facebook.com/posts/1480969635539475/optimizing-android-bytecode-with-redex这个网站去看,今天我想分享一下具体的实践过程。

前两天刚看到FB放出的这个工具包就迫不及待的去尝试了下,结果一直报下面这个错误:

1
configure: error: Please install double-conversion library

但其实这些library都已经安装好了的,那天倒腾了好久也跟群里的朋友交流过,感觉应该是FB的一个小bug于是去github上提了issue,果然第二天得到了回应官方更新了使用说明。下面是我在Mac OS X上的实践过程:

1、首先需要你的Xcode安装了命令行工具:

1
xcode-select --install

2、利用homebrew安装依赖包:

1
2
3
brew install autoconf automake libtool python3 
brew install boost double-conversion gflags glog libevent openssl 
brew link openssl --force

3、通过Git将redex的源码checkout到电脑上:

1
2
3
git clone https://github.com/facebook/redex.git 
cd redex 
git submodule update --init

4、通过autoconf和make来构建redex:

1
2
autoreconf -ivf && ./configure && make 
sudo make install

在执行步骤四的时候就出现了问题:

1
2
configure: error: Please install google-gflags library 
configure: error: ./configure failed for third-party/folly/folly

于是我又提了issue,下面是跟沟通的过程:
按照他的方法执行下面的命令:

1
2
xcode-select --install 
sudo xcode-select --switch /Library/Developer/CommandLineTools/

再执行步骤四就OK了当然如果看到很多warn也不用担心,最终可以编译通过。
接下来就可以通过redex执行最后的优化命令了:

1
redex path/to/your.apk -o path/to/output.apk

不过这里又出现了个问题:
又是环境问题😂 ,下面是配置过程:

1
2
mafeideAir:~ mafei$ vi ~/.bash_profile 
export PATH=/Users/mafei/Development/adt-bundle-mac-x86_64-20140702/sdk/build-tools/23.0.2:$PATH

因为这个是系统只读文件所以退出的时候要输入!wq才行
这下执行下面的命令就完全没问题啦!

1
2
3
mafeideAir:~ mafei$ cd GitHub/
mafeideAir:GitHub mafei$ cd redex/
mafeideAir:redex mafei$ redex metis_release_v1.0.2.apk -o out.apk

刚刚又去看了下redex的官网发现FB已经把这几天遇到的一些典型问题都汇总了一下:


FullStackEngineer的公众号,更多分享

Share Comments

[Android] 防止连续点击打开两个重复页面的小技巧

我们在开发APP的过程中经常会遇到在某些低端机或者在机器响应比较慢的情况下手抖连续点击某个页面(当然不排除有些人故意这么做)重复弹出好几个相同的页面,不过我发现微信这样的应用都没有做处理……但还是要分享一下我是怎么解决的。

1、通过判断两次点击的时间间隔来防止重复点击

工具类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 /**
* Created by mafei on 15/12/8.
*/
public class NoDoubleClickUtils {
private static long lastClickTime;
private final static int SPACE_TIME = 500;

public static void initLastClickTime() {
lastClickTime = 0;
}

public synchronized static boolean isDoubleClick() {
long currentTime = System.currentTimeMillis();
boolean isClick2;
if (currentTime - lastClickTime >
SPACE_TIME) {
isClick2 = false;
} else {
isClick2 = true;
}
lastClickTime = currentTime;
return isClick2;
}
}

使用方式:

1
2
3
4
5
6
7
8
9
10
11
/**
* 点击事件
*/
private View.OnClickListener logListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!NoDoubleClickUtils.isDoubleClick()) {
事件响应方法
}
}
};

2、通过修改manifest中页面的launchMode属性改为单例模式

1
2
3
4
5
<!-- 市场网贷产品页 -->
<activity
android:name=".activity.market.CreditRecordActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait" />

3、利用RxBinding实现防重复点击

RxBinding 是 Jake Wharton 的一个开源库,它提供了一套在 Android 平台上的基于 RxJava 的 Binding API。

1
2
3
RxView.clickEvents(button)
.throttleFirst(500, TimeUnit.MILLISECONDS)
.subscribe(clickAction);


FullStackEngineer的公众号,更多分享

Share Comments

[Android] 移动开发技术周报 #198

最近在浏览各大技术类资讯平台的时候发现Android Weekly是目前感觉在质量和时效性上都比较不错的平台,有兴趣的同学可以去http://androidweekly.net/ 订阅,但同时有了一个想法因为这个网站每次推送的都是纯英文版,说实话我一开始也是有点不太习惯因为阅读速度一下慢了好多,于是我打算试着去每周翻译一刊他们的推文希望可以为一些英文不太好但特别喜欢Android的同学带来些帮助,让大家可以快速了解目前的Android技术动态。

文章&学习指南

使用Design Support Library中的Bottom Sheets
随着时间的推移Design support library在被慢慢的改善,在23.2版本中增加了对Bottom Sheets的支持,在本文中你将很轻松的学会如果在你的应用中实现Bottom Sheets。
Android Thread Annotations的缺点
当像@UiThread和@WorkerThread这样的Android thread annotations被发布的时候,Michael Comella 很兴奋,然后许多个月过后他发现这种注解并没有像他所希望的那样有效果但又不知道为什么,于是他决定研究一下。
AutoValue Extensions
谷歌的AutoValue库在即将发布的extensions中提供了简单的值类型,这个演讲介绍了这个扩展的功能,囊括了对Android有用的扩展并且在构建你自己的应用中提供一些建议。
Vectors
这是偶然在第三方平台上看到的一个关于Android VectorDrawable的支持包,另外Google发布了Android 23.2支持库,其中包含了备受期待的VectorDrawableCompat。
五种很少有人知道的会阻塞主线程的情况
一般来说,任何方法的调用导致主线程阻塞时间超过16*N毫秒都会引起掉帧。我们称这种方法为阻塞方法。在这篇文章中,我们将首先看一个阻塞方法的例子,然后再看五个阻塞主线程的方式。
开源的Android LightCycle
SoundCloud最近开源了LightCycle,LightCycle是一个Android库有助于把Activity和Fragment中的逻辑拆分成小的代码块。
在Airbnb的Android版中采用RxJava
这个演讲中分享了Airbnb采用这些新模式和技术的经验,以及遇到的困难和坑。
第一个五年
Mark Allison通过每周写很有深度的文章来跟我们分享他的Android知识,请一定要在Twitter或者G +上感谢他。
RxJava的一些问题
Thomas Nield写了一些在使用RxJava中你可能会遇到的一些问题

赞助

Buddybuild:世界上第一个移动的持续集成平台
Buddybuild是一个移动的持续集成和部署平台,只需要几分钟设置。我们的SDK使用户能够无比轻松地实时获取用户的反馈和崩溃报告。不用再维护不同的构建、部署、崩溃报告和反馈系统。专注于自己最擅长的:创建人们喜爱的应用程序。
Hired—Android开发者的招聘平台
国外版的100Offer

LIBRARIES & CODE

Lightcycle
MaterialColorsApp
MaterialColorsApp 是一个方便的Mac小应用程序,让您可以快速访问标准的材料设计调色板。
LandscapeVideoCamera
非常强大的android 视频录制库,可以选择视频尺寸以及视频质量,只允许横屏录制。

新闻

Android Experiments I/O 挑战赛
去年夏天谷歌开发者社区启动了 Android Experiments :一个用于展示创新性 Android 作品的项目。所有开发者都可以提交你的创意作品,通过后将加入到网站收录中。
Fragmented Podcast 更新了 – TSHIRTS!
发布限量版的Fragmented T-Shirt
Android Studio 2.1 Preview 4 可用了
Google在canary渠道推送了Android Studio 2.1 Preview 4,修复了很多bug。

工具

Google新的 Accessibility Scanner
全新的Accessibility Scanner应用程序允许你检查潜在的问题从而改进你的应用程序。它在Play商店免费下载,但目前它仅限于Android 6.0设备。


FullStackEngineer的公众号,更多分享

Share Comments