头图

SegmentFault 思否技术周刊 Vol.74 — 浅谈 Android 进阶指北

本期技术周刊一起了解 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 请求的时候拿到请求数据。不过,这也可能导致一些安全问题,所以对于我们通常的处理方式是,对于线上运行的包,需要防止这些抓包手段。>

问答推荐


# SegmentFault 技术周刊 #

「技术周刊」是社区特别推出的技术内容系列,一周一主题。

每周二更新,欢迎「关注」。大家也可以在评论处留言自己感兴趣的主题,推荐主题相关的优秀文章。

如有问题可以添加小姐姐微信~

image.png


SegmentFault_社区周刊
主题技术周刊,每周分享新鲜有趣的技术干货。
avatar头饰
Beverly
SegmentFault 思否社区打工人

怂人面前全是坑,努力填坑 。

869 声望
2.1k 粉丝
0 条评论
推荐阅读
SegmentFault 思否技术周刊 Vol.80 — 玩转新时代前端构建工具
Vite 提供了一套原生 ESM 的 HMR API。 具有 HMR 功能的框架可以利用该 API 提供即时、准确的更新,而无需重新加载页面或清除应用程序状态。Vite 内置了 HMR 到 Vue.js 单文件组件(SFC)和 React Fast Refresh 中。

Beverly5阅读 1.6k

封面图
网易云音乐开源全链路埋点方案-曙光埋点(dawn)
网易云音乐开源了曙光埋点 dawn,一个跨多端的全链路埋点解决方案,旨在构造一个完美的数据理想国。曙光埋点创造性的提出了埋点虚拟树(VTree),并在此基础上实现了诸多能力,解决大前端侧埋点困难、精度差、不...

云音乐技术团队3阅读 2.5k

封面图
直播回顾 | 点击率提升400%,Ta是怎么做到的?
Discovery第18期直播已于3月30日圆满结束,本期直播邀请天眼查做客直播间,从天眼查与华为Push用户增长服务合作历程切入,聚焦用户增长,分享提升应用活跃度和渠道ROI的经验与见解。一起来回顾本期精彩内容吧!

HMSCore阅读 6.4k

Android Crash 前的最后抢救
众所周知,当 Andoird 程序发生未捕获的异常的时候,程序会直接 Crash 退出。而所谓安全气囊,是指在 Crash 发生时捕获异常,然后触发兜底逻辑,在程序退出前做最后的抢救。

xiangzhihong1阅读 1.4k

教你如何在 Andorid 上使用OpenAI API 调用ChatGpt
现在Chat GPT功能越来越强了,几乎你想问实际问题它都能给你回答。正好,小组结课的 Android项目 有一个解梦的功能。正好调用chatGpt的Api来实现。下面就来简单实现在Andorid项目中打造一个简易的聊天机器人。

weiweiyi1阅读 1k

一名七年老安卓的一二月小结
你好,我是 shixin,一名工作七年的安卓开发。每两个月我会做一次总结,记下这段时间里有意义的事和值得反复看的内容,为的是留一些回忆、评估自己的行为、沉淀有价值的信息。一转眼 2023 年过去了六分之一,这两...

shixinzhang2阅读 767

封面图
抢鲜解读:Flutter 3.7更新啦
新年伊始,由 Flutter 3.7 正式版来「打头阵」!我们与整个 Flutter 社区们继续在 Flutter 3.7 中优化了框架,包括创建自定义菜单栏和层叠式菜单、更好的国际化工具支持、新的调试工具以及其他功能和特性等。

慕课网阅读 2.6k

封面图
avatar头饰
Beverly
SegmentFault 思否社区打工人

怂人面前全是坑,努力填坑 。

869 声望
2.1k 粉丝
宣传栏