插件化基础知识之一:AndroidManifest的解析

Android手写占位式插件化框架之apk解析原理系统源码分析 问题引出,在宿主app中获取插件包中静态注册的广播接收者StaticeReceiver,这个时候就需要apk解析原理系统源码分析,分析后进行再来操作。一、在宿主APP中的PluginManager类中,增加一个方法parserApkAction(),通过反射源码,来解析apk文件里的所有信息。前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。分析完apk解析原理后,然后通过反射技术进行获取对应的信息。 阅读详情

1.清单文件对象化对应关系:

正如我们所知,AndroidManifest是安装过程中重要核心内容保存,在安装初始化过程中,会将其XML各个节点对应的Java对象。

按照级别分为:

PackageInfo

ApplicationInfo

ActivityInfo/ServiceInfo

2.核心类的解析

(1)PackageInfo:关于包的包名版本号以及所有的四大组件。

  • public String packageName:包名
  • public String versionName:版本名
  • public String versionCode:版本号
  • public String sharedUserId:共享用户ID,签名相同的情况下程序之间数据共享
  • public long firstInstallTime:第一次安装时间,忽略之前安装后卸载的情况单位ms
  • public long lastUpdateTime:最后更新时间,相同版本号的APK覆盖安装,该值也会发生变化,单位ms
  • public String[] requestedPermissions:请求的权限
  • public ApplicationInfo applicationInfo:Applicationinfo对象,下面会讲解
  • public ActivityInfo[] activities:注册的Activity
  • public ActivityInfo[] receivers:注册的Receiver,PS:注意这里是ActivityInfo[]
  • public ServiceInfo[] services:注册的服务
  • public ProviderInfo[] providers:注册的Providers

(2)PackageItemInfo:XML文件中各个节点对应的Java对象的基类

(3)ApplicationInfo:继承PackageItemInfo,是<application>节点信息。进程名称以及是否是系统应用判断

(4)ComponentInfo:

四大组件的基类,提供组件名称功能

(5)ActivityInfo

提供关于Activity的启动模式、主题、lable。

(6)ServiceInfo

同ActivityInfo

(7)ProviderInfo

同ServiceInfo,对应于<provider> 节点

(8)ResolveInfo

对应于<intent>节点

(9)PermissionInfo 

对应于该应用的权限,同样集成PackageItemInfo

(10)PermissionGroupInfo

对应于该应用的权限组


我能看得更远,因为站在巨人肩膀

https://www.jianshu.com/p/71c1ce538ee8

Win10家庭版没有Hyper-V?教你一招轻松解决(含避坑指南) 本文详细介绍了在Win10家庭版中启用Hyper-V的完整实战指南。通过DISM工具链绕过系统版本限制,无需重装系统即可完整启用所有Hyper-V组件,适用于开发者测试多系统环境和安全隔离应用场景。文章包含详细操作步骤、常见问题解决方案及性能优化配置,帮助用户轻松解决Win10家庭版没有Hyper-V的问题。 阅读详情

相关推荐

Gemini Enterprise免费试用攻略:解锁企业级AI平台的隐藏技巧与避坑指南

本文详细介绍了Gemini Enterprise免费试用的全流程攻略,包括注册优化、团队协作、资源管理和典型应用场景。通过解锁企业级AI平台的核心功能如Gemini 3.0 Pro模型和Nano Banana图像生成系统,帮助企业高效评估AI与业务的契合度。文章还提供了安全合规与数据管理的实用建议,确保试用过程顺畅无忧。

weixin_29233857的博客 657

AndroidManifest文件详解

AndroidManifest文件详解

Nohairs的博客 9747

PaddleOCR PP-OCRv5实战:5分钟搞定身份证信息提取(附完整代码)

本文详细介绍了如何利用PaddleOCR的PP-OCRv5模型,在5分钟内快速搭建身份证信息提取流程。文章从环境搭建、核心代码实战出发,深入解析了PP-OCRv5针对证件识别的优化特性,并提供了从OCR结果到结构化数据的完整处理方案与避坑指南,帮助开发者高效实现AI驱动的自动化信息提取。

salt9的博客 782

android-配置文件AndroidManifest.xml

AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permi...

1333

.ipynb文件深度解析:从JSON结构到Jupyter Notebook高效使用指南

在Python开发与数据处理领域,交互式编程正成为探索数据与验证思路的高效方式。Jupyter Notebook作为最流行的交互式环境之一,其默认文件格式.ipynb本质是一个基于JSON的文本文件,内部通过单元格组织代码、说明文字与运行结果。理解其JSON结构,不仅有助于掌握Notebook的存储原理,更能为文件损坏修复、版本控制与自动化转换提供基础。依托对单元格类型、魔法命令及输出可视化的熟练运用,数据分析和数据可视化流程可以变得更为流畅。同时,借助VS Code、nbconvert等工具,开发者能将.

weixin_28839629的博客 350

Vision-Language Navigation - Windows环境下编译安装Matterport3D Simulator仿真器(三)

目录1 编译 Matterport3D Simulator 源码1.1 源码下载1.2 编译 1 编译 Matterport3D Simulator 源码   在 Windows 下编译 Matterport3D Simulator 稍微有些不方便,需要对 CMakeLists.txt 进行一些修改,如果有更好的方法欢迎大家评论。 1.1 源码下载   还是直接在 Github 上搜索 Matterport3D Simulator 的 repo,下载源码。如果用 zip 方式,那么直接在下即可。如果使用

weixin_44110393的博客 4845

Android的Manifest配置文件介绍

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。还有。

2401_83703797的博客 1503

从 OPEN CURSOR 到 SELECT INTO TABLE:把 ABAP 数据读取的底层机制与性能差异讲透

ABAP数据库访问性能优化关键点 摘要:ABAP程序性能的核心在于数据读取方式的选择。本文分析了三种常见数据库访问方式的技术原理:显式游标(CURSOR)、SELECT-ENDSELECT循环和SELECT INTO TABLE。重点揭示了数据从数据库到应用服务器的传输机制,包括OPEN/REOPEN与FETCH操作、Array Fetch批量传输原理以及SAP游标缓存机制。通过VBAK表的性能测试数据对比,证明了不同场景下最优访问方式的选择依据:大数据量时显式游标性能优势明显,而SELECT INTO T

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 172

Android学习笔记之AndroidManifest

【2】service生命周期:Service只继承了onCreate(),onStart(),onDestroy()三个方法,第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法。应用程序运行的进程名,它的默认值为元素里设置的包名,当然每个组件都可以通过设置该属性来覆盖默认值。

2501_90401256的博客 956

华为OD机试真题2026双机位C卷 C语言 实现【明日之星选举】

给定一组选票votes。votes[i]代表第 i 张选票的内容,包含一个字符串"zhangsan,hanmei",表示推荐zhangsan为明日之星,反对 hanmei 称为明日之星。赞成或反对使用逗号(,)分割。 给定一个数组n,表示最后将筛选出赞成票最多的n个人,如果赞成票相同,则反对票越少,排序越靠前;如果赞成票和反对票都相同,则按照姓名字典序升序排序。

MISAYAONE的博客 184

扣子Coze工作流教程:采集公众号爆文,一键仿写自动发布

通过本教程,你学会了如何利用扣子(Coze)平台构建一个完整的公众号文章自动处理工作流。这个系统不仅能够大幅提升内容产出效率,还能通过AI二创保持内容新鲜度和原创性。最佳实践建议:初次使用时,建议先保存为草稿而不是直接发布,以便人工审核;从简单的工作流开始,逐步增加复杂度;定期检查工作流运行日志,优化节点配置。自动化内容创作是新媒体运营的未来趋势,掌握这项技能将使你在数字内容领域占据显著优势。

互联网架构师笔记 1238

PMS解析AndroidManifest.xml文件的过程

PMS解析AndroidManifest.xml文件的过程 一、前言 ​ 前段时间在看当下主流的安卓插件化技术原理的时候,发现目前插件化技术对于四大组件的处理基本都是通过代理来实现的(动态注册的广播接收器除外)。简单说就是需要先在主包里预埋一个注册到AndroidManifest.xml中的组件,具体的业务逻辑实现则在插件里面,最后通过代理技术将两者连接起来。 ​ 那么系统是如何从AndroidManifest.xml中解析出四大组件的?以及解析后的组件信息又是怎么保存的呢? ​ 首先我们要知道负责解

Alexwym的博客 2098

C#跨平台制图新纪元:Mapsui,一库在手,地图我有

深入学习Mapsui的渲染机制,定制属于你的地图样式,无论是颜色、图标还是文字,都可以随心所欲。

java专栏 1457

Android插件化-Broadcast篇

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人。

2401_85667460的博客 1124

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

RePlugin插件化框架解析——Activity生命周期管理

插件化要解决的一个关键的技术点就是Activity生命周期管理的问题。我们知道,在Android中,所有的Activity都必须注册在AndroidManifest中。这是因为,在Activity的启动过程中,系统要经过校验,如果没有在AndroidManifest中注册,启动Activity就会失败。在插件化方案中,宿主和插件是独立开发的,宿主的AndroidManifest是整个App的And......

卜大爷的博客 2万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

面试:插件化相关---broadcastReceiver

Android因此,Android将广播的,使得系统方便集成,更易扩展。

王温暖的博客 925

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

BroadcastReceiver插件化

这类广播发出后,所有感兴趣BroadcastReceiver会按照优先级先后收到该广播,需要注意的是,收到有序广播的BroadcastReceiver可以选择继续往下传,也可以选择中断该广播,也就是说优先级比它低的BroadcastReceiver都不会收到广播,有序广播发送比较简单。静态注册更常见的应用场景是应用未启动时接收系统广播,比如说手机开机完成的系统广播,手机刚开完机时,应用肯定还没有启动,这时候应用就可以通过静态广播来接收手机已经开机的系统广播,并执行相应的操作。广播按照不同标准可以分为几类。

Maniu_666的博客 169

OpenBeken OTA升级:3步完成无线固件更新

想象一下,场外的几十台智能开关已经装好,固件里却有一个需要统一修复的缺陷——挨个拆机、接串口重新烧录显然不现实。OpenBeken OTA升级就是为这种场景准备的:这款开源固件让设备通过 Wi-Fi 从 HTTP 服务器直接下载新固件包,不拆硬件也能完成无线固件更新。 ## 看懂原理:一次无线固件更新会经历什么 整个过程可以概括为:拉取、校验、写入。命令发出后,设备先连接到 HTTP 服务器,

gitblog_00079的博客 470

插件化原理解析——Activity生命周期管理

之前的Android插件化原理解析系列文章揭开了Hook机制的神秘面纱,现在我们手握倚天屠龙,那么如何通过这种技术完成插件化方案呢?具体来说,插件中的Activity,Service等组件如何在Android系统上运行起来? 在Java平台要做到动态运行模块、热插拔可以使用ClassLoader技术进行动态类加载,比如广泛使用的OSGi技术。在Android上当然也可以使用动态加载技术,但是...

heng615975867的专栏 806

Android插件化之启动Activity

在上一篇文章Android插件化之ClassLoader我们已经可以成功加载apk,但是还没有办法启动插件中的Activity。我们知道,如果要启动一个Activity,那么这个Activity必须在AndroidManifest.xml中注册。因此,如果我们要启动插件中的Activity,那么这个Activity事先必须在宿主的AndroidManifest.xml中预注册。这样一来就会有两个...

Android_SE的博客 1151

深入浅出Activity插件化相关原理

转载请标明出处:【顾林海的博客】 本篇文章已授权微信公众号 顾林海 独家发布 Activity的插件化解决的一个根本性问题就是插件中的Activity并没有在宿主的AndroidManifest.xml中进行注册,也就是说我们需要启动一个未注册的Activity,因此需要对Activity的启动过程有个了解。 启动Activity时会请求AMS创建Activity,这里的AMS指的是Acti...

顾林海 3万+

【Android 插件化】VAHunt 引入 | VAHunt 原理 | VAHunt 识别插件化引擎

一、VAHunt 引入、 二、VAHunt 原理、 三、识别插件化引擎

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1127

插件化原理解析——插件加载机制

上文Activity生命周期管理中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务;通过HookAMS和拦截ActivityThread中H类对于组件调度我们成功地绕过了AndroidMAnifest.xml的限制。 但是我们启动的『没有在AndroidManifet.xml中显式声明』的Activity和宿主程序存在于同一个Apk中;通常...

heng615975867的专栏 1091

android 插件化指的是什么,Android插件化——谈谈我理解的坑位

坑位的概念第一次据说坑位的概念是在360开源插件化框架RePlugin,我印象最深入的就是在演讲过程当中提到的只Hook了一处以及首创坑位概念。虽然下载了源码而且也大体了解了原理,可是本身好像仍是有些模糊,感受抓不到重点。昨天在看Hook AMS来实现启动一个不在AndroidManifest注册的Activity,由于版本问题,网上代码基本上都不行了。忽然想起这个坑位法,决定本身尝试一次!jav...

weixin_33268861的博客 197

Android插件化基础(4),动态启动插件中的Activity

Android插件化基础(4),动态启动插件中的ActivityAuthor:郑海波-莫川简介如何动态启动插件中的Activity呢?我们首先分析,启动插件中的Activity需要做那些准备? 1.插件中Activity类的加载 也就是ClassLoader的问题。由第一节课中的MultiDex可以知道,我们可以动态的加载apk,然后将插件中的class加载到当前的ClassLoader当中。这样,

郑海波(莫川)的优快云博客 4513
上一篇: 自定义相机那些坑之预览界面适配及原理
下一篇: JVM入门看着一篇就够了
FullStackDeveloper
博客等级 码龄11年 23粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值