Android 10源码解析:APK资源加载流程

1 下载量 138 浏览量 更新于2024-08-29 收藏 217KB PDF 举报
"0xA03 Android 10 源码分析:APK 加载流程之资源加载" 本文深入探讨了Android 10系统中APK的资源加载过程,主要聚焦于Android应用资源的结构与加载机制。Android资源主要包括assets和res两大部分。 1. **Android资源** - **assets资源**:存放于`assets`目录下,包含原始文件,不受编译过程影响,打包进APK后,可以通过`AssetManager`来访问,例如: ```java AssetManager assetManager = context.getAssets(); InputStream is = assetManager.open("fileName"); ``` - **res资源**:位于主工程的`res`目录,编译时会生成对应的资源ID。`res`目录下有如animator、anim、color、drawable、layout、menu、raw、values、XML等多个子目录,资源可通过`Resources`对象获取: ```java Resources res = getContext().getResources(); ``` 2. **资源加载流程** APK在生成过程中,会为res资源生成资源索引表,便于运行时快速定位。在应用启动时,系统会加载这些资源并构建`Resources`对象。这个过程涉及到解析资源XML文件,生成R类,以及资源的ID映射。 3. **LayoutInflater的inflate方法** `LayoutInflater.inflate()`方法用于将XML布局文件转换为视图树。它接受三个参数:布局资源ID、父视图(可选)和一个`AttributeSet`对象,分别用于指定要加载的布局、放置视图的目标容器和自定义属性。 4. **merge和include标签处理** - **merge标签**:用于减少视图层级,提高性能。当作为根元素时,它可以合并多个布局,避免不必要的父布局,从而减少视图层次,降低绘制开销。 - **include标签**:允许在多个布局中复用同一份XML代码,提高代码复用性。 5. **XML中的View实例化** 在XML布局解析过程中,`LayoutInflater`会根据XML标签创建对应的`View`对象,并设置其属性。这个过程涉及`LayoutInflater`的`createView()`方法,以及`AttributeSet`解析属性。 6. **复杂布局优化** 复杂的布局可能导致性能问题,因为绘制和测量操作会消耗大量CPU和GPU资源。在Android 10中,为了优化布局渲染,可能包括改进的视图树遍历算法、硬件加速优化、减少过度绘制等策略。 7. **BlinkLayout** `BlinkLayout`没有在文中详细解释,但通常它可能是某种特定的自定义布局,可能具有动画效果或特殊功能。自定义布局是Android开发中常见的实践,允许开发者扩展标准的视图组件。 理解Android资源加载机制对于优化应用性能至关重要,尤其是在处理复杂布局时。Android 10通过各种优化手段提升了资源加载和布局渲染效率,开发者应当充分利用这些特性来提高用户体验。
2020-01-03 上传
加密狗型号ID对照表: USB\\VID_096E&PID_0001 飞天诚信(ftsafe) 飞天4有驱型 加密锁 ROCKEY 4 Rockey4 R4 HID\\VID_096E&PID_0006 飞天诚信(ftsafe) 飞天4无驱型 加密锁 rockey 4 nd ROCKEY4ND R4nd USB\\VID_096E&PID_0201 飞天诚信(ftsafe) 飞天2无驱型 加密锁 rockey 2 ROCKEY2 R2 USB\\VID_096E&PID_0304 坚石诚信(Rockey) ET199 Token ET199 USB\\VID_096E&PID_0303 坚石诚信(Rockey) ET99 Token ET99 USB\\VID_096E&PID_0201 飞天诚信(FTSafe) Rockey 2 加密狗,无驱型 USB\\VID_096E&PID_0202 飞天诚信(FTSafe) Rockey 3 智能狗,无驱型 USB\\VID_096E&PID_0205 飞天诚信(FTSafe) Rockey 1 智能狗,无驱型 USB\\VID_096E&PID_0207 飞天诚信(FTSafe) Rockey 1 智慧型,无驱型 USB\\VID_096E&PID_0209 坚石诚信(FTSafe) ARM 时钟智能狗 USB\\VID_096E&PID_0403 飞天诚信(ftsafe) 飞天6无驱型 加密锁 rockey6 smart R6 USB\\VID_83D3&PID_3773 域天(域之天) 域之天 域天 专业型/经济易用型 加密锁 USB\\VID_3689&PID_8762 域天(域之天) 域之天 域天 密码型 加密锁 USB\\VID_1199&PID_8282 域天(域之天) 域之天 域天 简单型 加密锁 USB\\VID_1BC0&PID_1001 深思洛克(SenseLock) 灵锐 I(Living) 加密狗,无驱型 USB\\VID_1BC0&PID_8101 深思洛克(SenseLock) 灵锐 定制加密狗,无驱型 USB\\VID_04B4&PID_4A58 深思洛克(SenseLock) 深思 3(sense3)加密狗,无驱型 USB\\VID_04B4&PID_4A59 深思洛克(SenseLock) 深思 3(sense3)加密狗,有驱型 USB\\VID_1BC0&PID_8013 深思洛克(SenseLock) 精锐 E(Elite-E)智能狗,无驱型 USB\\VID_0471&PID_485D 深思洛克(senseLock) SenseIV2.x 深思洛克 sense4 senseIV 深思4 有驱 USB\\VID_0471&PID_485E 深思洛克(senseLock) SenseIV2.x 深思洛克 sense4 senseIV 深思4 无驱 USB\\VID_1312&PID_2012 域天(域之天)域之天 域天 32位智能型 易用型智能锁 加密锁 无驱 USB\\VID_1312&PID_1912 域天(域之天)域之天 域天 32位智能型(有驱型) USB\\VID_1312&PID_2012 域天(域之天)域天(域之天)简单智能型 USB\\VID_3689&PID_3689 EncryptPE 订制型(域天)EPE OEM加密狗 域天密码型 EncryptPE订制型 USB\\VID_5042&PID_FFFF 安全芯 schip 安全芯UKF-002 USB\\VID_08E2&PID_0002 赛孚耐(SafeNet) safenet microdog UMI 彩虹加密狗 微狗 USB\\VID_08E2&PID_0004 赛孚耐(SafeNet) safenet softdog UDA 彩虹加密狗 软件狗 USB\\VID_08E2&PID_0005 赛孚耐(SafeNet) 精灵狗UGA(GeniusDog),有驱型 USB\\VID_08E2&PID_0006 赛孚耐(SafeNet) safenet GrandDog 宏狗UGRA USB\\VID_08E2&PID_0008 赛孚耐(SafeNet) safenet SuperDog 超级狗 USB\\VID_04B9&PID_0300.DeviceDesc="SafeNet USB SuperPro/UltraPro" USB\\VID_04B9&PID_0301.DeviceDesc="SafeNet USB Security Security Token" USB\\VID_04B9&PID_0302.DeviceDesc="SafeNet USB Security Security Token" USB\\VID_04B9&PID_0303.DeviceDesc="SafeNet USB Security Security Token" USB\\VID_04B9&PID_0304.DeviceDesc="SafeNet USB Security Security Token" USB\\VID_04B9&PID_8000.DeviceDesc="SafeNet Sentinel Hardware Key" USB\\VID_04B9&PID_8001.DeviceDesc="SafeNet Sentinel Hardware Key RTC" USB\\VID_04B9&PID_8002.DeviceDesc="SafeNet Sentinel Hardware Key Mega-Memory" USB\\VID_04B9&PID_8003.DeviceDesc="SafeNet Sentinel Hardware Key Mega-Memory RTC" USB\\VID_04B9&PID_8004.DeviceDesc="SafeNet Sentinel Dual Hardware Key" USB\\VID_04B9&PID_8005.DeviceDesc="SafeNet Sentinel Dual Hardware Key RTC" USB\\VID_0925&PID_A508 北京磐石诚信NT系列加密狗 USB\\VID_7F5E&PID_DE5D 广州飞盾NT系列加密锁 USB\\VID_5042&PID_???? 江波龙(NetCom) 安全芯(SChip) 加密狗,有驱型 USB\\VID_5149&PID_???? 江波龙(NetCom) 易锁(SimpleKey)加密狗,无驱型 USB\\VID_0925&PID_7816 世纪龙脉(Century Longmai) NOX 时钟狗,无驱型 USB\\VID_0925&PID_9627 世纪龙脉(Century Longmai) NOX+ 单机狗,无驱型 USB\\VID_0925&PID_7A13 世纪龙脉(Century Longmai) DAM2+网络狗,无驱型 USB\\VID_0925&PID_5906 世纪龙脉(Century Longmai) NOX 定制狗,无驱型 USB\\VID_0925&PID_6B05 世纪龙脉(Century Longmai) NOX 加密狗,无驱型 USB\\VID_0925&PID_7A21 世纪龙脉(Century Longmai) NOX2 加密狗,无驱型 USB\\VID_0925&PID_7122 世纪龙脉(Century Longmai) DAM2+加密狗,无驱型 USB\\VID_0925&PID_5624 世纪龙脉(Century Longmai) DAM2 加密狗,无驱型 USB\\VID_0925&PID_8705 世纪龙脉(Century Longmai) NOX5 加密狗 智能狗,无驱型 USB\\VID_0925&PID_7504 世纪龙脉(Century Longmai) NOX5 主锁 USB\\VID_0529&PID_0001 阿拉丁(Aladdin) HASP HL Time 有驱型 USB\\VID_0529&PID_0001 阿拉丁(Aladdin) HandLock 有驱型 USB\\VID_0830&PID_2002 和升达 SK-USB180 无驱型 USB\\VID_5149&PID_EACE 杭州唯赛 易锁(Simple Key) 无驱型 USB\\VID_6A75&PID_9801 上海十条电子 JSP-C USB Key 有驱型 USB\\VID_10F7&PID_8469 MegaLock 无驱型 USB\\VID_064F&PID_0BD8 WIBU WIBU RU+加密狗,有驱型 USB\\VID_064F&PID_0BD7 WIBU WIBU U+加密狗,有驱型