使用 Lint 进行代码检查

使用 Lint 进行代码检查

背景

为了进一步规范协同合作中的代码规范,避免写低级 Bug 和对代码进行规约,在调研了多种方案后,决定使用该种方案对代码进行自动化检查和规约

记录一次 Android 内嵌 WebView 白屏无法加载内容的事故


昨天下午,产品经理突然发来了一张截图,内容是我们的 APP 因为违反了 Google Play 的某些规定被下架了。

这当然是马上排查原因并 fix 然后打包给测试同事重新测试一遍然后再提审啦。
但是问题来了,测试的同事发现 App 内的所有 HTML5 的页面都无法打开了,而主包(国内版本)却是正常的。

这怎么可能会发生呢,fix 被下架的问题并没有修改到 WebView 业务相关的代码,这就百思不得其解了。甚至一度以为是前端同事刚上线的代码影响到了海外版本的业务想甩锅。

拿起自己的手机装上 Google Play 版本的包打开对应的页面一看,基本上是第一次能正常加载,退出后再次点击进入 WebView 页面就无法加载了。

Charles 使用

本文简单介绍 Charles 的使用

Rewrite 功能

几乎可以用来修改 HTTP 请求中的所有数据
例如 Request 中的 path、query param 等等

这样的好处是只需要篡改请求中的数据,而不需要修改代码,避免重新编译,可以节省时间,也不会污染代码,造成发版时忘记修改回来的问题。

HTTPS 是如何保证安全的

众所周知,HTTP 协议是明文传输的,在网络世界里用 HTTP 协议发送报文相当于裸奔,于是就有了 HTTPS
这个 S 是什么呢,是如何保证我们发送的报文就不被窃取和篡改了呢,让我们慢慢道来

Android 组件化开发

Android 组件化开发

在项目的开发中,业务模块越来越多,代码量越来越多,编译构建的时间也越来越长,尝试将项目进行组件化开发。

所谓组件化,就是将各个业务模块解耦,在开发的时候将每个业务模块当做单独的 application 开发,在开发完毕后打包成 aar 或者以 module 的形式依赖到主 application 中。

Retrofit with okhttp

封装接口

首先,我们将将请求api封装成一个接口(interface), Retrofit 通过这个定义的interface生成一个具体的实现。
interface中进行接口api的定义,比如

1
2
3
4
    public interface RepoService {
@GET("/users/{user}/repos")
Call<ResponseBody> listRepo(@Path("user") String user);
}