更新应用程序而不安装新的APK

2024-02-13

我正在尝试查看是否可以远程更新用户手机上的应用程序无需下载 .apk文件。 (这是我的“老板”的信息收集请求。他认为这在 iOS 上是可能的,所以他希望我在 Android 上检查一下)。

本质上,我试图让我的应用程序偶尔从我们的网络服务器中提取版本号,看看它是否需要更新,如果需要更新,那么应用程序会请求许可,然后下载新文件(更新源代码、.xml 布局文件、图像等),从而完全不需要从 Play 商店下载我们的 APK(大小为 50mb)来进行修补程序甚至小的功能更新。

据我发现:

  1. 我可以下载资源/数据文本文件,可以读取这些文件以获取更多内容,但无法真正修改源代码,因为......

  2. APK 文件在创建时本质上是“烘焙”的,因此源代码、.xml 文件等被最小化、重命名和混淆,这意味着向现有 APK 添加新功能或修补程序将很困难。我认为你可以更改图像,但仅此而已。

我相信糖果粉碎传奇当他们下载新关卡时(不涉及游戏商店的应用内更新)会以某种方式执行此操作,但这可能只是方法1。Firebase远程配置的简要研究也有类似的东西,但预设参数的限制意味着尝试使用它进行修补/更新可能会不稳定。

我是正确的还是我错过了一些明显的东西?


我认为你的问题可以通过使用来解决patching系统。

一些图书馆可以帮助你:

  1. Tinker https://github.com/Tencent/tinker

    Tinker是Android的热修复解决方案库,它支持dex、库和资源更新,而无需重新安装apk。

  2. AndFix https://github.com/alibaba/AndFix

    AndFix 是一种在线修复错误而不是重新分发的解决方案 安卓应用程序。它作为 Android 库分发。

    Andfix 是“Android 热修复”的缩写。

    AndFix支持Android版本2.3到7.0,ARM和X86 架构,Dalvik 和 ART 运行时,32 位和 64 位。

    AndFix补丁的压缩文件格式是.apatch。这是 从您自己的服务器发送到客户端以修复您的应用程序的错误

    原则
    AndFix的实现原理是方法体的替换,

    enter image description here ...

  3. Amigo https://github.com/eleme/Amigo

    Amigo 是一个修补程序库,可以修复 Android 应用程序的几乎所有内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新应用程序而不安装新的APK 的相关文章

  • Android第一次动画不流畅

    我正在尝试一个动画将 imageView 从屏幕底部滑动到屏幕中心 但是当我第一次执行此动画时 它不平滑 但当第二次执行动画时 它是正常且平滑的 我几乎尝试了所有方法 但无法解决我的问题 这是我的动画文件
  • 导航组件重复 NavArgs 的问题

    我有一个片段 class SomeFragment private val args by navArgs
  • Firebase Analytics 禁用受众国家/地区跟踪

    我正在开发一个严格不允许位置跟踪的应用程序 我想使用 Firebase Analytic 的其他功能 例如 PageTransitions 和 Crashalitics 但如果我无法禁用受众位置跟踪 我就无法使用其中任何功能 这是我在 An
  • 为什么将函数参数声明为最终的?

    我目前正在阅读 Sams 出版的 24 小时自学 Android 应用程序开发 一书 我对 Java Android 或其他方面还比较陌生 我对 ActionScript 3 有非常扎实的背景 它与 Java 有足够的相似之处 因此该语言本
  • Phonegap - 如何将.txt文件保存在Android手机的根目录中

    我正在尝试使用phonegap 将 txt 文件保存在Android 手机的根目录中 我已经安装了这些插件 cordova plugin file 和 cordova plugin file transfer 在 config xml 文件
  • 共同的偏好不断消失

    我正在使用共享首选项来存储我的应用程序的登录凭据 除了一个用户之外 一切正常 一段时间后 共享偏好似乎会以某种方式重置或清除 我已针对该用户调整了我的应用程序 使其不再清除他的共享偏好设置 这样我就可以确定这不是我的应用程序的错 但即使在这
  • Delphi XE7 Android 全屏(隐藏软键)

    如何在XE7中全屏显示 隐藏顶部 标题 和底部 软键 工具栏 在 XE6 中 我可以通过在应用程序部分写入来调整 AndroidManifest 以使我的应用程序全屏显示并且没有操作栏 android theme android style
  • 如何查找 Android 设备中的所有文件并将它们放入列表中?

    我正在寻求帮助来列出 Android 外部存储设备中的所有文件 我想查找所有文件夹 包括主文件夹的子文件夹 有办法吗 我已经做了一个基本的工作 但我仍然没有得到想要的结果 这不起作用 这是我的代码 File files array file
  • TextView 之间有分隔线

    我正在尝试在 android studio 中创建以下布局 因为我对 android 东西还很陌生 所以我第一次尝试使用 LinearLayout 并认为这可能无法实现 现在我正在尝试使用RelativeLayout 我已经用颜色创建了这个
  • Firebase:如何在Android应用程序中设置默认通知渠道?

    如何设置default通知渠道通知消息当应用程序在后台运行时会出现什么情况 默认情况下 这些消息使用 杂项 通道 如你看到的在官方文档中 https firebase google com docs cloud messaging andr
  • CookieManager.getInstance().removeAllCookie();不删除所有cookie

    我在应用程序的 onCreate 中调用 CookieManager getInstance removeAllCookie 我遇到了一个奇怪的问题 我看到 GET 请求中传递了意外的 cookie 值 事实上 cookie 值是一个非常非
  • Flutter 深度链接

    据Flutter官方介绍深层链接页面 https flutter dev docs development ui navigation deep linking 我们不需要任何插件或本机 Android iOS 代码来处理深层链接 但它并没
  • Android 启动器快捷方式

    我制作了一个简单的打卡 打卡时钟应用程序 我想向用户添加在主屏幕上创建快捷方式的选项 该快捷方式将切换应用程序的状态 超时 超时 但我根本不希望此快捷方式在屏幕上打开应用程序 这是我的 setupShortcut private void
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • Android构建apk:控制MANIFEST.MF

    Android 构建 APK 假设一个 apk 包含一个库 jar 例如 foo jar 该库具有 META INF MANIFEST MF 这对于它的运行很重要 但在APK中有一个包含签名数据的MANIFEST MF 并且lib jar
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • 材质设计图标颜色

    应该是哪种颜色 暗 材质图标 在官方文档上 https www google com design spec style icons html icons system icons https www google com design s
  • 调节麦克风录音音量

    我们正在尝试调整录音时的音量级别 麦克风似乎非常敏感 会接收到很多静电 我们查看了 setVolumeControlStream 但找不到传入其中来控制麦克风的流 将您的音频源设置为 MIC using MediaRecorder Audi
  • Android:有没有办法以毫安为单位获取设备的电池容量?

    我想获取设备的电池容量来进行一些电池消耗计算 是否可以以某种方式获取它 例如 三星 Galaxy Note 2 的电池容量为 3100mAh 谢谢你的帮助 知道了 在 SDK 中无法直接找到任何内容 但可以使用反射来完成 这是工作代码 pu
  • 在webview android中加载本地html文件

    我正在尝试在 android 的 webview 中加载 html 文件的内容 但是 它给了我 网页不可用错误 如果我尝试使用谷歌或雅虎等网站 它们就会起作用 html文件位于src gt main gt assests gt index

随机推荐

  • 如何在 iOS 的 flutter 中将图像流缓冲区转换为 jpeg 图像字节?

    当我们处理相机时flutter 我们用Camera plugin It has startImageStream返回的方法CameraImage cameraImage数据类型 In iOS cameraImage format is bg
  • 检查 DI-Graph 中是否存在任何路径

    如果我有一个有向图 如何检查所有节点对 a b 是否创建路径 Example Input v1 v2 v5 v6 v2 v3 v3 v4 v4 v5 v0 v1 我需要检查该图中是否存在至少一条路径 而无需多次访问每个节点 我已经尝试过回溯
  • 是否可以将参数传递到通过选项卡访问的 FB 应用程序的回调 URL?

    我有这个 Facebook 应用程序 它向粉丝页面添加自定义选项卡 您可以通过以下 URL 访问该选项卡 http www facebook com pages PAGE NAME HERE PAGE ID v APP ID http ww
  • 如何在Python中模拟CPU和内存压力

    我想知道是否有人用 python 编写了模拟 cpu 和内存压力的代码 我看到一段加载 cpu 的代码 但如何强制它们在 90 的使用率下工作 一个节点主要有 4 种经常使用的资源 有效内存 中央处理器周期 储存空间 网络负载 上传和下载
  • 更改 DataMember 的 XML 命名空间

    我有两个DataContract我正在使用 a 序列化为 XMLDataContractSerializer 我为两个不同的指定了不同的命名空间DataContract然而 有一个DataMember每一个DataContract属于相同的
  • HTMLCollection、NodeList 和对象数组之间的区别

    当谈到 DOM 时 我总是对 HTMLCollections 对象和数组感到困惑 例如 有什么区别document getElementsByTagName td and td myTable and td 是对象 jQuery 对象 为什
  • 如何生成一个不以 0 开头且具有唯一数字的随机 4 位数字?

    这几乎可以正常工作 但数字有时以 0 开头 import random numbers random sample range 10 4 print join map str numbers 我找到了很多例子 但没有一个能保证序列不会以0
  • 解析 HTML:成人分类系统

    我正在研究网络上使用的不同且 有时已过时 的评级 分类标准 IE PICS http www w3 org PICS POWDER http www w3 org 2007 powder ICRA http www fosi org icr
  • 为什么 JSON.Parse 说“无效字符”?

    我在 IE 中运行了一段 JS 其中包含以下行 var data JSON parse skill SK AUTO DEV TEST kind IS REQUIRED 谁能告诉我这有什么问题吗 因为这不是有效的 JSON 您需要在属性名称周
  • 两列,100%高度固定流体

    不使用表格如何实现下面的效果呢 例子 http enstar nl example php http enstar nl example php 该示例目前可能不可见 名称服务器应该已更改 但我的主机更新它们的速度不是那么快 今天晚些时候应
  • AJAX (XMLHttpRequest) 进度监控不适用于 Service Workers

    我想将网络表单转换为离线工作 最初 我会在用户完成每个步骤后将表单信息存储在 Web 服务器上的 SQL 数据库中 其中一个步骤包括上传图像 为此我实现了一个进度条 添加服务工作者后 我注意到进度条不再起作用 进度条会显示 但永远不会更新以
  • 如何通过代码向 yaml 文件添加新条目

    我有 yaml 文件 我需要使用 go 代码在运行时向其中添加数据 路径就像下面这样 我的意思是 这是 yaml 文件 其下有一个条目sif of snk dev spec mec tolerations effect NoSchedule
  • 将 url 表放入 `data.frame` R-XML-RCurl

    我正在尝试将网址表放入data frame 在其他示例中 我发现以下代码有效 library XML library RCurl theurl lt https es finance yahoo com q cp s BEL20 BR ta
  • 无法在vb.net中将文件写入硬盘

    您好 我检查了此处存在的所有问题对我没有帮助 所以我问 好的 我们开始吧 我尝试将文件从 资源 复制到 C Test 文件夹对我不起作用 这是我尝试过的 首先 我将 test txt 文件放在资源中复制到 C Test 文件夹 但出现错误
  • WebBrowser 控件和 cookie

    我对 WebBrowser 控件和 cookie 有疑问 首先 当人们在普通的 Web 浏览器 在我的例子中是 IE9 中导航时会发生什么 1 1 我打开网页http www gmail com http www gmail com 我输入
  • 如何以编程方式获取计算机的本地网络 IP 地址?

    我需要使用 C 和 NET 3 5 从我的程序中获取计算机的实际本地网络 IP 地址 例如 192 168 0 220 在这种情况下我不能只使用 127 0 0 1 我怎样才能做到这一点 如果您正在寻找命令行实用程序 ipconfig 可以
  • Python 在屏幕上绘图

    我正在编写一个需要选择屏幕区域的应用程序 我需要将光标更改为十字形 然后在用户选择上绘制一个矩形 我搜索的第一件事是如何操作光标 然后我遇到了 wxPython 使用wxPython 我可以轻松地在带有面板的框架上执行此操作 问题是我需要窗
  • 如何在 Python 日志消息中将“levelname”重命名为“level”?

    我有一个 Python 日志记录配置 如下所示 LOGGING CONFIG version 1 formatters human class logging Formatter format asctime s levelname s m
  • 我应该阻止密码自动完成吗?

    有很多在这里回复 https stackoverflow com questions 2530 how do you disable browser autocomplete on web form field input tag on h
  • 更新应用程序而不安装新的APK

    我正在尝试查看是否可以远程更新用户手机上的应用程序无需下载 apk文件 这是我的 老板 的信息收集请求 他认为这在 iOS 上是可能的 所以他希望我在 Android 上检查一下 本质上 我试图让我的应用程序偶尔从我们的网络服务器中提取版本