以编程方式禁用Android操作系统升级?

3
我们是一家制造工业设备的公司的软件开发部门,我们有一些三星Galaxy-Tab 4平板电脑,我们将其用作制造设备的“遥控器”,使用我们自己编写的应用程序进行操作,并直接从Android Studio安装。此应用程序未分发给其他设备。我们在线购买了这些平板电脑,直接从三星出售,即没有涉及电话公司或公共运营商。这些平板电脑未在Google上注册,即没有与其关联的Gmail帐户;实际上,我们甚至无法使用它们访问Google Play。我亲自打开了这些平板电脑,并且从未向Google或三星注册过它们。
因此,当我今天早上进来时,在其中一个屏幕上看到一个通知,说已下载了计划的软件更新,并准备好进行。它说大小为876.87 MB,并且要升级到Lollipop操作系统。
我不知道升级来自哪里或者如何启动它。我的担忧是,如果这种情况发生在客户现场或贸易展览上,意外的升级可能会破坏我们的软件或引起其他问题。 是否有一种方法可以通过编程方式禁用软件升级?

如果你的产品涉及硬件和软件,你可能应该在销售前将 Android 操作系统分支并放在平板电脑上。应用程序被隔离并且只能访问自己的东西,在处理沙盒外的事物时非常愚蠢(操作系统)。在大多数情况下,更新不应该破坏你的应用程序,如果确实如此,那么可能要考虑一下你向客户销售的软件质量。另一个选择是在将平板电脑发送给客户之前禁用自动更新。 - CodyEngel
我不知道那些都是什么意思(“分叉操作系统”?)。我们不是从源代码构建自己的操作系统(在这里也没有成为操作系统开发人员的资源)。这是原装操作系统,不是某些未知来源的定制黑市操作系统。此外,我们不会将其销售给客户-它用于贸易展览和现场工程师使用。 - user316117
“我不知道升级是从哪里来的” - Google,通过三星,通过您的网络连接。“它是如何启动的” - 设备定期检查更新。“有没有办法我可以编程禁用软件升级?” - 除非设备所有者API中有我没有看到的内容,否则不行。 - CommonsWare
相关链接:http://android.stackexchange.com/questions/100991/how-do-i-skip-an-android-system-update-and-stop-its-notifications - Morrison Chang
如果您想禁用操作系统更新,您将不得不在操作系统级别进行此操作,这意味着分叉AOSP并滚动自己的Android版本。我举了这个例子来突显您的请求是多么荒谬,但是如果您想确保他们无法更新设备,那么这就是您要做的事情。 - CodyEngel
2个回答

0
作为应用程序开发者,您无法控制固件升级。它们来自运营商,或者如果是Wi-Fi平板电脑,则来自制造商。
您的唯一选择是控制固件。这意味着为所选硬件构建自己的Android固件分发。然后,您可以通过在固件中进行更改来禁用(或以其他方式控制)固件更新计划/过程。
与部署应用程序相比,拥有固件非常重要。

0
今天早上我进来时看到屏幕上有一个预定的软件更新通知,我感到很惊讶。
作为一名软件开发人员,我无法理解你的惊讶。这是操作系统非常出名的功能之一(由于缓慢/延迟的推出而经常受到批评)。
我不知道升级是从哪里来的或者它是如何启动的。
这些来自设备制造商(你说过是三星,对吧?),不需要任何类型的登录或帐户。它在操作系统的某个深处编码,以检查制造商服务器是否有更新。与Windows、Mac OS、Linux或iOS发生的情况相同。
从API角度来看,应用程序绝对不能禁用操作系统更新。这将是一个重大的安全漏洞。人们可以轻松地想象到一个恶意应用程序利用已知的操作系统漏洞并阻止操作系统更新本身,以修补漏洞。
您的情况可能的解决方案:
除了创建自己的定制操作系统来控制进程之外,我能想到的唯一可能的方法是托管自己的 VPN 服务器,阻止更新服务器(或阻止整个互联网,除了您想从应用程序访问的资源),并在“设置 -> WiFi”下配置设备到此 VPN。
附:我看到了提到的link,我建议不要禁用系统服务(或者至少在禁用后进行大量测试),因为那可能会引起其他问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接