首页
学习
活动
专区
圈层
工具
发布

APK安装流程详解9——PackageParser解析APK(上)

这些"分割"APK的必须都是有效的安装,同时必须满足下面的几个条件: 所有的APK必须具有完全相同的软件包名称,版本代码和签名证书 所有的APK必须具有唯一的拆分名称 所有安装必须包含一个单一的APK...APK,即一个应用只有一个APK文件,而Google Play 还允许你为一个应用中发布不同的APK文件,这些APK文件适用于不同的设备,例如:你现在有一个APP叫DEMO1,但是目前由于APK的体积太大或者其他因素导致不能同时适用于手机和平板...所以我们这里就不挨个讲解了,关于这个类的主要方法,后续在讲解APK时会用到,所以关于这个类,我们先简单讲解下PackageParse类的内部类,然后依据在安装流程中的安装入口依次讲解PackageParse...关于每个字段的含义,我在每个字段上都添加了注释,关于这个类的一些方法,我会在后面讲解方法的时候讲解 (九) 静态内部类Component类 代码在PackageParser.java 5044行...它自动会检测安装包的模式的是单一APK或者集群APK模式。 这样就可以对"集群APK"的安装包进行理性的检查,比如会检查"base APK"和"拆分APK"是否具有相同的包名和版本号。

6.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    安装一个apk引起的无法开机!

    而这其中的一个条件引起了我的注意---pkg.isPrivileged(),这个为true则说明这是一个priv-app,而priv-app一般都是内置在系统内作为系统软件,还能在外部安装?...因为找错了的原因,我把安装的堆栈打了出来,发现报错其实是在PackageManagerServiceUtils#verifySignatures。...毕竟在包管理中,一个包的签名相当于这个包的DNA了,只有经过同一个x509.pem和.pk8文件签名的apk的签名才会相同。...可以看到这里校验签名不匹配直接抛出了throw new PackageManagerException,终止安装流程,根本不给你安装成功的机会。...我已经用这个apk搞坏了一台Google Pixel(泪目),普通用户大概也只能恢复出厂设置了,高级用户可以用串口打开USB调试,然后把这个包卸载掉。

    1.3K20

    在复杂陌生的Linux设备上,编译安装PHP

    起因 在一台陌生的SUSE Linux Enterprise上面迁移之前做的一个服务器端接口,需要用到phpredis。...而安装phpredis,需要用到phpize,phpize在php5-devel这个包里面。 然后,很直接的,使用yast2 –install php5-devel进行安装的时候,麻烦来了。...这台Server是一台部署在一线的生产环境,意味着稳定第一。而使用yast2进行安装的时候,也不知道是不是很久没更新的缘故,提示有大量的包需要更新,甚至连一些系统核心的依赖包也需要更新。...find / -name apxs2 编译安装PHP的时候,由于Apache是默认使用yast2进行安装的,所以编译PHP的时候,–with-apxs2没有找到对应的依赖文件。...感触 Linux在某些方面上的设计,真是很不错。比如你可以装很多个Apache,装很多个php,并且可以做到每一个都互相独立工作,互不干扰。

    1.7K00

    发布在IIS的apk或者ipa文件无法访问

    1、在Startup.cs的Configure方法中添加如下代码 var provider = new FileExtensionContentTypeProvider();       provider.Mappings.Add...(".apk", "application/vnd.android.package-archive");       app.UseStaticFiles(new StaticFileOptions      ...System.IO.Directory.GetCurrentDirectory() + @"/App"), RequestPath = $ "/项目名称/App" // 存放APP的文件夹    }); 2、IIS-添加.apk...的MIME类型 1)单击IIS上右击所建网站,选择MIME类型 2)点击MIME类型,点击添加 文件扩展名:.apk MIME类型:application/vnd.android.package-archive...注意:app的文件要设置属性为:始终复制 以上就是发布在IIS的apk或者ipa文件无法访问的介绍,做此记录,如有帮助,欢迎点赞关注收藏!

    65510

    如何使用adb命令安装apk到电视上

    使用此命令之前,先确定你的电视已打开adb调试服务 如何打开请参考:TCL MS平台电视如何实现adb连接从而安装第三方应用程序 需要用到的软件 Windows下,选择”开始”->运行->cmd...,进入命令行模式; 进入adb的目录,如adb在D盘adbtools文件夹中,则: d: cd adbtools 如果嫌麻烦,可以在adb目录中右击|在此处直接打开命令窗口 输入adb后回车 如果有...Adb成功后查看你电视的IP,一般在系统设置|网络设置中 连接Android TV的IP,如IP为…,则输入: adb connect …: 然后回车 如果出现connected to …:,则说明连接成功...连接成功后 就可以安装第三方app了。如安装第三方app腾讯视频(路径为D:apk qqHD.apk)。 adb install “D:apkqqHD.apk “ 若出现success,则成功安装。...如果安装过程中,出现错误,请查看第一句话,看自己是否符合,若不符合,再按步骤仔细排查一遍。

    5.6K30

    在边缘设备上安装 Korifi 以管理 K3s

    在边缘设备上安装 Korifi 以管理 K3s 通过安装 Cloud Foundry Korifi 抽象层,可以更轻松地在边缘设备和物联网设备上启用 Kubernetes 。...因此,编写指南以在每个提供商上安装和使用 Korifi 是有意义的。 因此,现在我们介绍第一个关于在流行的轻量级 K3s 上部署 Korifi 的教程。...K3s 的小型占用空间使其能够在计算能力较低的设备上运行,非常适用于物联网部署。K3s 还非常适用于资源有限且连接可能不稳定的边缘计算场景。...它使开发人员能够将 Kubernetes 集群部署在靠近边缘设备的位置,减少延迟并增强数据处理能力。 在本教程中,我们将介绍如何在 K3s 集群上安装 Cloud Foundry Korifi 。...K3s 安装过程中默认不执行此操作。如果跳过此步骤,我们将无法使用 kubectl 与集群连接,而这是后续操作所需的。

    34910

    无法在驱动器0的分区1上安装windows

    如果BIOS开启UEFI,而硬盘分区表格式为MBR则无法安装;BIOS关闭UEFI而硬盘分区表格式为GPT也是无法安装Windows。 ---- (注意事项:转换分区表格式会清空硬盘所有数据!)...二、无法在驱动器0分区上安装windows解决方法 1、在当前安装界面按住Shift+F10调出命令提示符窗口; 2、输入diskpart,按回车执行; 3、进入DISKPART命令模式,输入list...select disk 0回车,输入clean,删除磁盘分区; 5、输入convert mbr,回车,将磁盘转换为MBR,输入convert gpt则转为GPT; 以上就是重装win8、win10提示无法在驱动器...0分区上安装windows解决方法,有遇到这个问题的用户根据上述步骤转换硬盘分区表格式就能解决问题了。...记住:最重要的是,完成以上步骤之后,返回刚开始的界面重新点击安装window,之后,才可以。本人亲测,多次可以使用。解决此方法。

    4.8K30

    使用adb通过电脑给安卓设备安装apk文件

    最近碰到要在开发板上安装软件的问题,由于是开发板上的安卓系统没有解析apk文件的工具,所以无法通过直接打开apk文件来安装软件。...因此查询各种资料后发现可以使用adb工具,这样一来可以在电脑上给安卓设备安装软件。...ADB 就是连接 Android 手机与 PC 端的桥梁,所以ADB又称为安卓调试桥,可以让用户在电脑上对手机进行全面的操作!...安卓设备可能会弹出一些提示,比如是否允许调试设备等等,同意调试即可 adb root 2.安装apk包到安卓设备中 找到你需要安装在安卓设备中的apk包所在的文件路径+apk包的名字,并放入下面命令中,...例如 adb install D:/xxx/xxx.apk  运行命令便可在安卓设备中安装apk包了

    4K10

    APK安装流程详解12——PMS中的新安装流程上(拷贝)

    , 本片文章只讲主流程,在主流程涉及到的复杂问题,或者小分支,我会提出问题,但由于简书的篇幅问题,我就不在本篇文章深入了,我会在这篇文章APK安装流程详解14——PMS中的新安装流程上(拷贝)补充去深入讲解...安装流程详解14——PMS中的新安装流程上(拷贝)补充中的 "一、在PackageManagerService的installPackageAsUser方法里面的代码" 部分 就像这个方法的名字叫"installPackageAsUser..., Context.BIND_AUTO_CREATE, UserHandle.OWNER)为什么等于bindService这里也不详细讲解了,我们会在后面的文章APK安装流程详解14——PMS中的新安装流程上...(String,boolean,String)方法的讲解 里面会想详细讲解 3、createInstallArgs(InstallParams)方法: 请参考APK安装流程详解14——PMS中的新安装流程上...(Intent intent)的功能是否和Context.sendBroadcastAsUser一样: 请参考APK安装流程详解14——PMS中的新安装流程上(拷贝)补充中的十一、Context.sendBroadcast

    1.8K10

    在Mac上为其他设备开启代理

    但是想要安装到Mac上则需要安装.NET运行时,可是一旦启动Fiddler代理就无缘无故崩溃,最后不得不铩羽而归,另谋他路。...SquidMan SquidMan是一款Mac上的图形化的squid代理服务器的安装管理工具。使用squid服务器软件可以帮助我们实现如下功能 缓存下载内容,减少网络带宽,加速网页浏览。...作为代理服务器,供其他设备使用。 这里我们用到的是其代理功能。 巧妇难为无米之炊,首先要做的就是安装squidman,从这里下载对应的版本并安装,然后进行启动即可。...客户端配置 以下操作的WIFI热点应该为Mac设备与客户端设备同时连接的热点,以确保在同一局域网中。 代理服务器的IP地址使用ifconfig查看,端口默认为8087。...- HIER_DIRECT/115.239.210.14 text/html 默认情况下,从日志中是无法看到GET查询参数的,因为在写入日志前,程序已经过滤掉了这些数据。

    6.9K31

    在设备上通过WebAssembly本地执行LLM

    Yuan展示了开源的WasmEdge如何使用WebAssembly在您自己的设备上本地运行大型语言模型,无论是Mac、笔记本电脑还是像树莓派这样的边缘设备。...使用轻量级的执行环境,可以在这些不同类型的设备上高效地运行更大的语言模型。...Yuan表示: "ChatGPT无法在这些环境中运行,但是使用像WasmEdge这样轻量级的大型语言模型,你就可以运行它"。 通常与机器学习相关的Python不是方程式的一部分。...在Python中进行大规模语言推理,您需要整个PyTorch和GPU驱动程序等等,这些东西大约是3GB,我不敢在我的电脑上安装它。"...第一步是安装Water Manage,这里是命令。如您所见,会议的网络连接很糟糕,所以下载和安装的过程可能需要一分钟左右。一旦安装完成,您将不需要互联网连接来进行未来的安装。

    44110
    领券