Webview.apk —— Google 官方的私有插件化方案

2020-07-12
阅读 11 分钟
5.5k
在 Android 跨入 5.0 版本之后,我们在使用 Android 手机的过程中,可能会发现一个奇特的现象,就是手机里的 WebView 是可以在应用商店升级,而不需要跟随系统的。

React — 端的编程范式

2020-01-19
阅读 7 分钟
10.6k
两年前因为 antd 开始接触了这套脚手架。我的确很需要这套脚手架,对于新手来说,整合 react / redux / react-redux / react-router / react-router-redux 的确还是蛮费劲的 —— 如果像我这么偷懒,可能都没办法了解它们是什么。

Gradle Builds Everything —— Extends Android Gradle Plugin

2020-01-14
阅读 4 分钟
4.4k
这个可能是作为 Android 开发想要做插件开发的时候最关心的事,我们今天看看如何去扩展 Android Gradle Plugin(以下简称 AGP)

Gemini @ 2019

2020-01-13
阅读 1 分钟
1.7k
今年的第一印象是坐飞机最多的一年,超越了 2019 年前所有飞机次数的总和。今年飞出去有因为个人原因,也有因为出差的原因。不过少了一个对飞机的新鲜感,其实也不是坏事。

Gradle Builds Everything —— 从 0 开始做插件

2020-01-13
阅读 3 分钟
4.8k
我们使用 Intellij IDEA 来创建一个普通的 Gradle Java 工程。创建完成后,设置好 Gradle Wrapper,工程一开始长这样:

Gradle Builds Everything —— 产物输出

2020-01-12
阅读 3 分钟
4.9k
Gradle 打包的时候,还有个最终要的东西 —— 产物,这里的产物包括提供给别的项目的产物,今天我们来讲一讲,产物这个东西。首先,看下我们前面介绍了的 Configuration 对象,我们看下这个接口声明知道这个对象有incoming和outgoing两种模式,incoming 我们会用的多一点,就是从这个 Configuration 中获取产物,比如:

Gradle Builds Everything —— 处理依赖(aar)

2020-01-11
阅读 5 分钟
6.3k
我们使用 gradle 的时候,会使用implementation, compile等方式加入一些依赖,比如,aar 是个最经典的例子。那么 aar 到底经过 gradle 怎样的处理使得它能轻松的应用这个产物呢?

Gradle Builds Everything —— Task 实例

2020-01-04
阅读 3 分钟
4.1k
为了方便,我们的语境分不开Gradle和Android Gradle Plugin,因此此处不脱离Android环境来介绍Gradle。我们在讲述任务依赖的时候,提到一个Manager的东西,在这里,我们说到的是Android Gradle Plugin提供的BuildableArtifactsHolder这个类。

Gradle Builds Everything —— 基础概念

2020-01-03
阅读 4 分钟
3.4k
提到 Gradle,熟悉 Android 的人都不会陌生,在我们开始把 Android Studio 这个 IDE 扶正的时候,gradle 就彻底进入了我们的视野。但是大多数人对于 gradle 执行构建和构建流程都比较陌生,本文从编写 Gradle Plugin 的角度,希望把 Gradle 体系的一些基础结构能讲明白。

OK, IO

2018-04-14
阅读 9 分钟
1.7k
Okio is a library that complements java.io and java.nio to make it much easier to access, store, and process your data.它的定位是对 java.io 和 java.nio 包做了一个补足,使得开发者能更轻松地处理数据。

一些「流与管道」的小事

2018-04-05
阅读 3 分钟
3.1k
「流」这个概念在开发中非常常见,在 java 语言里我们熟知InputStream和OutputStream,node 中有WriteStream和ReadStream,cpp 里也有 stream… 似乎这是编程语言里不可或缺的一部分。而初学者一般会照着文档完成我们的程序却对流本身并不是特别了解。如果你是科班出身的话,老师会和你说过,「流」顾名思义,就像水流一...

Native Hybrid Programming 之构建初探

2017-06-19
阅读 9 分钟
5.4k
最近几周开始了 IM 项目,因此想在应用层写一套业务隔离的,跨平台的 SDK, 我便瞄准了 libuv 这个库,开始了 Native Hybrid 的研究 —— 为了写一次代码可以同时在 Android 和 iOS 平台上进行编译/运行。

Java NIO 入门

2017-02-22
阅读 2 分钟
2.7k
很多人用过InputStream和OutputStream接口,用来操作文件、Socket等等 IO 操作。如果是简单的,速度较快的 IO 操作,我们用Stream类的接口,依然可以风生水起。如果你要使用非阻塞的 IO 的话,他们可能就满足不了你了。

View.toString()

2017-01-19
阅读 4 分钟
2.6k
一般对象的toString输出是一段hashCode,而 View 的输出是这么一串的东西,它是不是有意义呢?我们就来看下View的toString方法的实现。

Aspects AOP 的实现

2017-01-05
阅读 9 分钟
4.9k
里面的内容非常简单,其实就2个文件,Aspect.h和Aspect.m,它使用Category为NSObject提供了两个额外的方法,API如下:

Dagger2 —— 匪夷所思,结果那么爱你

2016-11-14
阅读 3 分钟
4.9k
今天我们来讲讲一个有一点点冷门的库Dagger吧。我做一个不负责任的猜测:做客户端的同学可能比较少听到一些名词,比如面向切面编程、控制反转、依赖注入,相信玩过Spring的同学肯定知道这些一开始让人头大后来却很好玩的玩意儿。

搭建 iOS 自动打包发布持续集成系统

2016-07-21
阅读 4 分钟
16.9k
概念 原先搭建这套东西其实没多少事,但是受人邀请,还是写篇文章防止后来人踏坑吧。 持续集成系统(CI)想必看文章的应该都知道是什么东西,应该都清楚,如果不太明白的,移步 [链接] 总结起来其实也很简单: 把构建和发布的问题自动化、简单化。 你可以想象这么一个场景: 当你的代码写完后,敲入一个git push,CI 系...

android 实现【夜晚模式】的另外一种思路

2016-06-16
阅读 8 分钟
13k
源码地址 在一切开始之前,我只想用正当的方式,跪求各位的一个star [链接] 预览 序 在写SegmentFault for Android 4.0的过程中,因为原先采用的夜间模式,代码着实不好看,于是我又开始挖坑了。 在几个月前更新的Android Support Library 23.2中,让我们认识到了DayNight Theme。一看源码,原来以前在API 8的时候就已经...

websocket 协议解析 [RFC6455]

2016-06-09
阅读 3 分钟
13.1k
近期工作忙碌,为了赶SegmentFault for Android 4.0版,到了发疯的程度。我来汇报一个进度,已经实现基于websocket的私信系统了,多亏了70大大不懈的努力,在不久的将来,我们使用web给手机发送私信的愿望很快就可以达成了。

Android 优化交互 —— CoordinatorLayout 与 Behavior

2016-04-28
阅读 3 分钟
26.8k
如果你已经很时髦的用上了AppBar,TabLayout,FloatActionButton,以及Snackbar的话,我想你多多少少肯定知道CoordinatorLayout这个东西。 它的神秘感来自于在布局文件 (xml) 和代码调用上完全看不出和其他组件任何的耦合,却能做出一些神奇酷炫的交互效果。

谜之RxJava (三)update 2 —— subscribeOn 和 observeOn 的区别

2016-04-03
阅读 11 分钟
26.3k
用过rxjava的旁友都知道,subscribeOn和observeOn都是用来切换线程用的,可是我什么时候用subscribeOn,什么时候用observeOn呢,我们很少知道这两个区别是啥。

谜之RxJava (三)update —— 线程切换(二)

2016-04-03
阅读 5 分钟
4.3k
在RxJava更新版本后,OperatorSubscribeOn这个接口进行了一个重构,变换方式从一个比较难理解的递归嵌套的Observable<Observable<T>>上做一个Operator改成了从OnSubscribe角度上进行了一层封装。

那是我夕阳下的奔跑 —— Gemini

2016-03-07
阅读 2 分钟
6.4k
Hello,我是Gemini。 一个被世界遗忘的诗人。目前就职于 SegmentFault,负责移动端(Android/iOS)的开发,是一个内外兼骚的好人。

Native 与 UIWebView 通信 —— 实现查看大图方案(一)

2016-03-04
阅读 4 分钟
4.7k
我们写资讯类的App经常会碰到的一个交互就是在详情页里面实现【查看大图】的功能。但是大部分的详情页为了更好的排版都是通过用WebView来实现的,因为WebView和Native组件隔绝的缘故,导致我们实现【查看大图】功能是比较麻烦的,我们从图片的加载说起吧。

Android 程序员学习 iOS —— 在线程间跳舞

2016-02-28
阅读 2 分钟
4.1k
在客户端开发的过程中,我们经常碰到的问题有可能就是 IO 请求完成后,在主线程中更新 UI 这件事了,看见这个问题,我们一般会直接想到 Handler这个大杀器,

Android 程序员学习 iOS ——UIViewController 和 Layout System

2016-01-19
阅读 2 分钟
5.3k
Hello,通过Android程序员 如何入门iOS ——故事从这里开始 作为一个Androider 去看iOS程序的目录结构应该算有个大概的理解了,接下去我们小小介绍下和我们交道打的最多的UIViewController。

Android 程序员学习 iOS ——故事从这里开始

2016-01-07
阅读 2 分钟
10.1k
最近因为公司的一些原因,需要涉及iOS开发。在坑里摸爬滚打了2周之后,就写个入门心得吧。在一切的一切开始之前,你要先会Objective-C或者Swift(喜欢哪个用哪个,你开心就好)。

谜之RxJava(四)—— Retrofit和RxJava的基情

2015-12-01
阅读 5 分钟
25.3k
今天来介绍下和RxJava搭配使用的好基友,就是我们的Retrofit啦,Retrofit使用动态代理的机制,为我们提供了一个简要的使用方法来获取网络上的资料,现在更新到2.0.0-beta2了(因为是beta,我也碰到一些坑,期待作者发布下一个版本)。

谜之RxJava (三)—— 线程切换

2015-11-26
阅读 7 分钟
20.7k
RxJava最迷人的是什么?答案就是把异步序列写到一个工作流里!和javascript的Promise/A如出一辙。OK,在java中做异步的事情在我们传统理解过来可不方便,而且,如果要让异步按照我们的工作流来,就更困难了。

谜之RxJava (二) —— Magic Lift

2015-11-26
阅读 5 分钟
18.6k
上一篇文章 讲了Observable、OnSubscribe和Subscriber之间的关系。 我们知道,Observable的具体工作都是在OnSubscribe中完成的。从这个类名我们也知道,如果生成了一个Observable对象,而不进行subscribe,那么什么都不会发生!