本期技术周刊一起了解 Android,欢迎大家阅读 ~
核心知识进阶
Android 开发中的SSL pinning // xiangzhihong
在日常的安全渗透过程中,我们经常会遇到瓶颈无处下手,这时候如果攻击者从 APP 进行突破,往往会有很多惊喜。但是目前市场上的APP都会为防止别人恶意盗取和恶意篡改进行一些保护措施,比如模拟器检测、root 检测、APK 加固、代码混淆、代码反调试、反脱壳、签名校验等等对抗机制。而测试人员对APP进行渗透的首步操作通常就是上 burp 或者 Charles 这类抓包工具进行抓包,查看请求记录里的域名及链接地址是否可以进一步利用。
我们都知道 http 协议传输的是明文信息,是可以直接捕获的,从而造成了数据泄露。为了防止中间人的拦截,出现了 HTTPS 加密机制。在 HTTPS 中,使用了证书+数字签名解决了抓包的问题,这里用到了两个概念:数字签名和数字证书。
TheRouter 的跨模块依赖注入实现原理 // 张涛
TheRouter 用于跨模块通信设计的 ServiceProvider,核心设计思想是参考了 SOA (面向服务架构)的设计方式。
具体到 Android 侧就是 AIDL 类似的实现。
模块化能力支持项:
支持跨模块依赖注入
支持自定义注入项的创建规则,依赖注入可自定义参数
支持自定义服务拦截,单模块 mock 调试
支持注入对象缓存,多次注入 只会 new 一次对象
Android 平台上 ABI 的确认 // 戈壁老王
ABI 即 Application binary interface,是 CPU 与指令集专属的应用程序二进制接口。它定义了一套规则,允许编译好的二进制目标代码能在所有兼容该ABI的操作系统中无需改动就能运行。不同的 Android 设备使用不同的 CPU,而不同的 CPU 支持不同的指令集。
ABI 包含以下信息:
可使用的 CPU 指令集(和扩展指令集)。
运行时内存存储和加载的字节顺序。Android 始终是 little-endian。
在应用和系统之间传递数据的规范(包括对齐限制),以及系统调用函数时如何使用堆栈和寄存器。
可执行二进制文件(例如程序和共享库)的格式,以及它们支持的内容类型。Android 始终使用 ELF。
如何重整 C++ 名称。
最全的 Android 之 Dialog // 浪漫主义码农
Android 系统提供的对话框父类为 Dialog, 里面并没有实现对话框的具体类型,比如单选、多选、列表等对话框,仅提供一个框架和规范。系统为开发者提供了一个 多功能的对话框类 AlertDialog, 封装了各种对话框的样式,我们只需要完成要显示的内容和监听。
大部分对话框就是使用系统封装好的对话框 AlertDialog 的实例对象。AlertDialog 并不提供对外的构造方法,即不能直接通过 AlertDialog 的构造函数来生产一个AlertDialog。因为 AlertDialog 所有的构造方法都是 protected 的。所以为了获取 AlertDialog 对象,系统提供了一个静态内部类 Builder 让我们使用,通过 Builder 可以创建 AlertDialog 对象。
应用与实践
浅谈 App 的启动优化 // xuexiangjys
在Android中,应用启动一般可分为三种:冷启动、温启动、热启动。
那么什么是冷启动、温启动和热启动呢?下面我们来简单看一下它们的定义:
- 冷启动:当启动应用时,后台没有该应用的进程。这时系统会又一次创建一个新的进程分配给该应用,这个启动方式就是冷启动。
- 温启动:当启动应用时,后台已有该应用的进程,但是Activity可能因为内存不足被回收。这样系统会从已有的进程中来启动这个Activity,这个启动方式叫温启动。
- 热启动:当启动应用时,后台已有该应用的进程,且Activity仍然存在内存中没有被回收。这样系统直接把这个Activity拉到前台即可,这个启动方式叫热启动。
由于冷启动相对于其他启动方式多了进程的创建(Zygote进程fork创建进程)以及应用的资源加载和初始化(Application的创建及初始化),所以相对来说会比较耗时,所以我们一般说的App启动优化一般指的都是App的冷启动优化。
Android App 如何防止抓包 // xiangzhihong
在软件开发中,常用的抓包方式有 Charles 、 Fiddler和Burp,它们通过在手机网络中添加代理的方式,然后安装信任证书,接着就可以在 App 请求的时候拿到请求数据。不过,这也可能导致一些安全问题,所以对于我们通常的处理方式是,对于线上运行的包,需要防止这些抓包手段。>
问答推荐
- Android 11 应用进入后台后前台服务里面的 Socket 被挂起?
- 在和前端进行前后交互时出现的问题?
- 安卓开发,获取文件路径变成数字?
- Android native 层 mediaplayer 源码修改,如何进行打桩测试?
- 为什么实际大小和显示的大小相差那么多?
- 前端安卓 app 开发,用什么技术栈比较好呢?
- Android 重复文件如何区分?
- Androidviewmodel 有一个 App 参数,异常 has no zero argument constructor?
- android linearlayout 设置高度无效?
# SegmentFault 技术周刊 #
「技术周刊」是社区特别推出的技术内容系列,一周一主题。
每周二更新,欢迎「关注」。大家也可以在评论处留言自己感兴趣的主题,推荐主题相关的优秀文章。
如有问题可以添加小姐姐微信~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。