闭卷重建Android平台分层的对象、公式、算例、算法与失败边界。
移动计算与安卓系统 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷重建Linux进程、UID与沙箱的对象、公式、算例、算法与失败边界。
闭卷重建启动、Zygote与应用进程的对象、公式、算例、算法与失败边界。
闭卷重建Binder IPC与服务调用的对象、公式、算例、算法与失败边界。
闭卷重建ART、字节码与编译的对象、公式、算例、算法与失败边界。
闭卷重建Package、Manifest与组件发现的对象、公式、算例、算法与失败边界。
闭卷重建系统版本、API级别与兼容行为的对象、公式、算例、算法与失败边界。
对象:每个应用通常以独立UID运行,内核权限隔离文件与进程;共享UID等例外风险更高。;公式:access=Linux DAC/MAC∧Android permission/policy。;算例:应用A私有文件mode仅自己UID可读,应用B即使猜到路径也应失败。;边界:把包名当安全身份;root设备假设直接套普通环境。。
对象:应用框架、系统服务、ART/原生库、HAL和Linux内核分层,通过稳定接口隔离硬件与应用。;公式:app→framework→system service/HAL→kernel/device。;算例:相机应用经Camera API到系统服务/HAL再驱动,不能直接假设硬件细节。;边界:把SDK类调用当进程内函数;厂商HAL差异未测。。
对象:Binder以驱动和线程池在进程间传递事务、对象引用与调用者身份;接口大小和阻塞性重要。;公式:latency=marshal+queue+remote work+unmarshal。;算例:序列化2ms、排队3、远端10、反序列化2,总17ms。;边界:主线程同步Binder做慢I/O;信任客户端自报UID。。
对象:系统由init启动核心服务,Zygote预加载并fork应用进程,减少启动成本但保留进程隔离。;公式:startup=process creation+class init+app init+first frame。;算例:总启动700ms,其中进程100、类150、应用200,首帧阶段250ms。;边界:把热启动结果当冷启动;Application中同步网络。。
对象:APK/AAB包含代码、资源、清单和签名;Manifest声明组件、权限、intent过滤与导出边界。;公式:external reachability=exported∧intent match∧permission。;算例:Activity exported=true且无权限保护,外部应用可构造匹配Intent启动。;边界:只看源码Manifest忽略依赖合并;含intent-filter却未显式exported。。
对象:源代码编译为DEX,ART结合解释、JIT/AOT与profile优化;构建和运行时版本影响性能。;公式:runtime cost depends on code path hotness and compilation mode。;算例:首运行方法未编译耗10ms,JIT后2ms,单次降幅80%。;边界:用debug性能代表release;反射/动态加载破坏优化假设。。
对象:compile/target/min SDK含义不同;target升级会启用新行为,运行时仍需按设备API分支。;公式:available API if device SDK≥introduced and behavior depends on target。;算例:API在26引入,设备25调用会失败,即使compile SDK足够。;边界:只改target数字不测行为;用版本判断代替能力检测。。