Guofeng Blog

「离开世界之前 一切都是过程」

DeepLink AppLink-InstantApp 前奏详解

DeepLink AppLink-InstantApp 前奏详解 参见 DeepLink AppLink, 1.为何引入Deep Links和App Links的概念 肯定有很多童鞋不理解,为什么我要在讲Instant App技术之前,要提及这个“看似不相关”的概念呢?实则真正在进行Instant App程序开发时,是必然涉及到这标题所述的两个概念的。应该先搞清这两个概念的区别,再来...

InstantApp 开发详解

InstantApp 开发详解 参见 Instant APP, 1.Instant App程序的结构及概念 在之前的课程我们有介绍,要想进行Instant App的程序开发,必须基于Android Studio 3.0集成开发环境。故后面介绍的所有关于代码的书写,以及在集成开发环境内进行程序架构,本人均在Android Studio 3.0 preview...

Java 泛型上界 extends 和泛型下界 super 详解

Java 泛型上界 extends 和泛型下界 super 详解 转载于 Java 泛型上下界 <? extends T>和<? super T>是Java泛型中的“通配符(Wildcards)”和“边界(Bounds)”的概念。 <? extends T>:是指 “上界通配符(Upper Bounds Wildcards)” <...

Android VasDolly渠道包实现原理(v1,v2签名介绍)

Android VasDolly渠道包实现原理(v1,v2签名介绍) 转载于 VasDolly 概述 众所周知,因为国内Android应用分发市场的现状,我们在发布APP时,一般需要生成多个渠道包,上传到不同的应用市场。这些渠道包需要包含不同的渠道信息,在APP和后台交互或者数据上报时,会带上各自的渠道信息。这样,我们就能统计到每个分发市场的下载数、用户数等关键数据。 普通的多渠道打...

Android 权限实践总结

Android 权限实践总结 前言 虽然Android M 23推出了动态权限申请,但是6.0之前的系统怎么办呢?特别是恶心的国产 ROM 各自为政,都搞了一套自己的权限。除此之外,当你的 targetSDKVersion < 23时,在 M 以上的手机是默认全部授予的,看起来没问题,但是用户居然可以手动取消。WTF……..这一坨该怎么弄,本文综合对权限的理解与工程中的使用,给出如...

手写SDK 项目之网络框架

手写Android SDK 项目网络框架 原作者 我的前言 作为一款 app 开发者而言,可能真的就是 rxjava+retrofit+okhttp 搞定网络请求了。但是假如你是做一个 sdk 的,比如地图 SDK,埋点 SDK,就不能这么搞了,因为你依赖了一个外部特定的 SDK,假如接入的 APP 也用了同样的库,但是版本不一样,新版本往往有些新的改动,这个时候你的 SDK 就不稳定...

介绍一款好玩的工具 [Appetizer]

介绍一款好玩的工具 [Appetizer] 介绍一款好玩的工具,测试同学可能比较感兴趣,同时控制多个收集操作: replaykit 是 Appetizer 的核心功能,它提供了如下功能: 从单台设备录制屏幕触碰事件,在多台设备上重放(需要屏幕横宽比一致) 同时控制多台设备(例如, 运行一个 shell 命令,安装 apk 等) 将一台设备的屏幕触碰事件,镜像操作到多台设备...

Android6.0动态权限源码导读

Android6.0动态权限源码导读 原文作者 作者对源码进行过跟踪调试,所以整个源码流程还是很清晰的,转载过来,以备不时之需。 1 写在前面 话说 6.0 出来已经挺久了,对于权限适配我们也有很多轮子可用。关于如何适配 6.0 权限,网上资料很多也很完善,故并不会展开探讨。 不用第三方框架的话,我们会和这些 api 打交道 (方法太长省略参数): Context.check...

OkHttpDNS实现原理

OkHttpDNS实现原理 原文作者 作者在解析 HttpDNS之后,并没有把解析的结果包装为 InetAddress,而是直接调用了 InetAddress.getByName 方法,方法仍然是调用系统原生 dns 查询,所以我写了一个 IPUtils 库,安全的解析返回结果(出现任何异常都会走系统解析,保证安全) The Application of HTTP DNS on OkH...

HTTP(S) DNS优化

HTTP(S) DNS优化 作者:美图:颜向群 高可用架构 备注: 1.我所在的团队之前做过 HttpDNS,但是采用的是文章中作者说的最原始的方案,替换 host,hostnameverify,整个过程很繁琐,而且容易出问题。一旦出了问题,是致命的,没有 fallback。 2.作者介绍的 java 层和 native 层 hook 方案,对业务层无感知,非常好。我觉得好的方案就是...