当前位置: 首页 > 知识库问答 >
问题:

提取apk并与更新合并,然后安装新的apk

姜鸿
2023-03-14

首先,当你的手机上有应用程序,并且这个应用程序在play store上有更新时,google只返回更新的部分代码而不是整个包(例如3毫克而不是8毫克,这是整个包的大小)。我研究并发现,在android端,google play提取本地应用程序并合并从play store下载的更新文件,生成新的apk,然后安装新的apk和更新。假设play store没有apk keystore来签署新的apk,但apk已成功安装。现在,我有一个应用程序从我的服务器下载更新的apk。服务器检测两个APK之间的更改,并仅返回已完成的更改。现在,在android方面,我想让我正在运行的应用程序提取本地apk,并将其与更新程序合并,生成新的apk(比如play store)。另外,它应该签署新的apk,但它不应该把我的密钥存储在用户端文件。我最近在windows中,解压缩了一个apk文件,并添加了一些文件从另一个apk到它。两个APK都已签名。在我手机里放了个新apk。但Android系统无法安装该app,并表示“app无法安装”。我怎么能这么做?

共有1个答案

潘衡
2023-03-14

应用程序不能修改其APK。apk文件仅对用户system可写,因此非根设备上的常规应用程序不可能更新或修改它自己的或任何其他apk。

唯一的方法是保存到sdcard上的apk,然后触发应用程序的侧加载,这样用户就可以选择安装它。但如果需要激活设备以“安装未知来源的应用程序”(默认情况下禁用)。

签名:一个APK签名包括一个文本文件,其中包含每个文件的哈希值和APK中包含的哈希值,再加上该文本文件的签名。

 类似资料:
  • 问题内容: 下图中的高亮显示了我要实现的逻辑。我意识到语法不正确。 只有在目标表中其列之一的值为空且源表中的对应值不为空的情况下,才可以有条件地更新MERGE语句中的记录吗? 您如何建议重写? 问题答案: 您也许可以使用。

  • 我的搜索建议我可以使用,但是我对它的测试显示它是按照它所说的顺序执行的,所以它的“find”部分返回更新之前找到的记录。 更新后如何查找记录?

  • 我现在在google play store上有一个应用程序,我只是把我以前的java代码移到kotlin上,因为它对我来说容易多了。包裹都是一样的。在我的android studio上有一个问题,当我尝试执行版本变体时,我一直出现这个install_failed_update_incompatible错误。在我的搜索,我必须删除旧的应用程序。现在我有点担心了。我没有我的用户基础卸载应用程序,更不用

  • 问题内容: 我知道,如果没有其他具有相同ID和类型的对象附加到会话中,则使用update会将分离的对象置于持久状态。合并不关心状态。如果会话中不存在相同类型的持久对象,或者它使用新对象的值更新旧对象,则它只会返回该对象。我的问题是关于数据库命中的问题。方法“更新”和“合并”是否立即击中数据库?或关闭会话后,数据库中的更改显而易见。 编辑:如果我们通过save方法在持久化实例上调用update方法会

  • 让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。 你将经历如下步骤: 开发某个网站。 为实现某个新的需求,创建一个分支。 在这个分支上开展工作。 正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。 你将按照如下方式来处理: 切换到你的线上分支(production branch)。 为这个紧急任务新建一个分支,并在其中修复它。 在测试通过之后,切换回线上