用于Instant Apps的Google Play服务会未经授权自行下载/安装,下载/更新其他组件,如何禁用?


28

背景

即时应用谷歌Play服务 ”已安装本身在设备上没有我的允许。它破坏了我的防火墙(AFWall和其他几个应用程序)的功能。并且它在未经许可的情况下正在更新自身和其他应用程序/组件。当我卸载此组件时,它将再次下载自身并重新安装。(也就是说,很可能实际上是在后台执行“ Google Play服务”)

没有确认,也没有任何下载,更新或安装的通知。我发现它的方式是注意到我的应用程序的某些功能已更改/损坏。因此,我使用了一个应用程序(“ Android的系统信息”),它表明实际上是一天前安装的“用于Instant Apps的Google Play服务”。

我的问题是:如何完全禁用Android设备的未经授权的更新,同时保留以下功能:

  • 联系人同步
  • Google Play商店
  • Google Maps App

在这些屏幕截图中,您可以看到所有负责自动更新的设置均已关闭。因此,此下载和安装显然是未经授权的,不应该发生。安装东西后,将显示Instant Apps设置的屏幕快照。仅保留Google Play商店中的全局设置。

在此处输入图片说明
设置›应用程序 // 设置› Google›即时应用程序(关闭!)// Play商店设置(自动更新关闭!)

在我遵循了一个误导性建议之后,一切都开始了,您可以在此屏幕截图中看到,以更新“ Google Play服务”:

在此处输入图片说明
点击图片查看大图


更新1:

到目前为止,我发现有些东西(很可能是“ Google Play服务”)正在请求下载和安装。这样做的方式是通过Google下载管理器发出请求。不清楚触发它的原因,但是如果仔细观察设备,则会从通知下载指示显示来自下载管理器的图标,指示下载百分比。但是,完成后,它会立即消失。仍然没有任何指示安装的信息。

到目前为止,我已经尝试过:

  1. 安装以下的用户级别,而不是系统级应用程序,它们是最初的:谷歌帐户,GP商店和服务框架(com.google.android.gms; com.android.vending; com.google.android.gsf)这没有奏效。仍然要求下载,然后安装。
  2. 似乎任何阻止安装的方法都会使其一次又一次下载(直到您的数据用完)。因此,最有可能的最佳方法是首先防止下载。我无法将Download Manager安装为用户应用程序,这似乎是需要控制的部分。
  3. 可以通过防火墙阻止Download Manager和/或Play Store,但这破坏了下载应用程序的唯一可信赖方式。

更新2:

降级到GP Services的先前版本(v11.3.02)已有几天,但是今天下载并安装了Instant Apps的GP Services。因此,使用哪个版本都没关系。无论如何,谷歌很可能会以这种方式更新所有手机。

更新3:

因此,现在Google几乎随时会定期进行自我更新。如果我正在观看电影,流失了我的速度,用完了我为每MB支付钱的互联网带宽。在此图像中,您可以看到未经许可已更新了3个Google应用。

在此处输入图片说明


1
@Firelord,您好:我要说的是“即时应用程序的Google Play服务”,而不是标准的“ Google Play服务”。后者是最新的发展,并且行为类似于恶意软件(尽管它是Google的官方应用)。我不会对它破坏的应用程序功能进行详细介绍,主要是因为它可能依赖于设备/ ROM(我运行的是标准ROM,并且它是根目录,但是出于这个问题,我想找到“正常”的无根解决方案)。AFWall断断续续地给我“无法应用规则”错误。
艾米尔(Emil)

1
@Izzy感谢您的修改,使其更加清晰。
艾米尔(Emil)

1
高兴地读,埃米尔!是的,再测试一下。如果没有副作用,请考虑回答您自己的问题:)
Izzy

1
这是Google Play论坛上相关讨论链接
Stan

3
@frans,您好,问题不只是带宽/成本。这也是我要阻止的有害软件的安装。另外,由于我目前无法访问WiFi,因此我会通过电话的互联网下载应用程序和更新。另一件事是,此更新程序“监听”状态更改,因此,如果您切换到WiFi,它将优先处理Google内容并立即对其进行提示。在下面发布的解决方法中,基本上是一种竞争条件,我会在意识到可以下载更新之前先下载一些应用程序,但是随后我再次锁定了它,但这不是100%可靠的方式。
艾米尔(Emil)

Answers:


7

更新:在最新的android版本中,您可以从Settings-> Google-> Instant Apps->进行操作OFF

原始答案如下:

在最佳情况下,这足以阻止Instant Apps自动更新。

通过终端(connectbot,juicessh等)在设备上运行。

pm hide com.google.android.instantapps.supervisor

或者,如果通过电缆(或wifi adb)连接时在PC上通过adb运行,​​请使用:

adb shell pm hide com.google.android.instantapps.supervisor

与不一样pm disable pm hide也可以在非根设备上使用。到目前为止,我再也没有看到Instant Apps通知了。

如果上述方法对您不起作用,则另一种方法是修改文件/文件夹的SELinux上下文(例如,使用chcon)。


要恢复pm hide上面的命令,请使用:

pm unhide com.google.android.instantapps.supervisor

好吧,这将针对特定的应用程序,但是我想阻止所有未经授权的更新或新应用程序的安装。同样,这种“系统级”的安装和下载对用户来说是隐藏的。它的工作方式是检查版本,如果需要升级,则在后台下载文件。下载完成后,它将尝试进行安装;如果安装失败,它将在另一时间再次尝试。临时文件会定期删除,因此,如果找不到该文件,它将再次下载。如果您监视临时文件夹,您可以一遍又一遍地抓到它...
Emil

@Emil:com.google.android.instantapps.supervisor正在进行您提到的监视的应用不是吗?还是Google Play服务提供的某些特定服务?如果是第二个,那么我猜食谱还不完整。我还拒绝了该软件包在后台运行并在启动时启动的权限。
ccpizza

我无法确切指出监控的内容。在Android上,有一个设置侦听器的系统,有一些应用声称可以调整这些侦听器,但事实证明它们无效。我找不到直接访问/控制“队列”或以某种方式拦截它的方法。基本上,所有Google视为核心的内容都可以解决普通应用程序的设置
Emil

3

顾名思义,它是Google服务应用程序的一部分。PlayStore使用它来运行应用程序而不安装它们(新服务)。可以禁用但不能删除(据我所知,它将作为核心服务的一部分继续自行安装)。

要禁用,请转到设置› Google›即时应用程序,然后切换拨动开关(参考)。

我相信这将是在较新设备问世时的系统应用程序,对于我们其余使用较旧设备的人,它们将强制安装在兼容设备上。

编辑:由于这个问题,我回答后被修正了。此答案适用于无根设备。有了植根设备,这是有可能的,但我想不出简单或永久的解决方案。



@Emil我刚刚清理了所有注释,但聊天链接除外(该注释仍然可用)。此外,我不能同意这不是答案:在您的问题中,您写了“似乎没有简单的方法来永久禁用此功能”和“我的问题是:我如何完全禁用此功能” –这就是Josue在这篇文章中提出:“要禁用,请转到“设置”,“ Google”,“ Instant Apps”并切换切换开关。” 如果您这样做了却没有用,请说明。
伊齐

1
无论如何,我已经尽力解释了这一点。他问了一个问题,我基本上说不,解释了原因,并为可能遇到类似情况的其他人提供了信息。问题已更改,我进行编辑以表示我的回答适用于原始问题。如果我误解了这里的规则是如何工作的,请删除我的答案,并告诉我如何做得更好。
Josue Rivera

1
@JosueRivera离开,如果您对自己没有错感到满意。如果答案有误,人们可以投票否决并继续前进。
Firelord

1
即使设置为关闭,它也会自动更新。我在一个月前关闭了它,今天它又自动更新了。
tgf

1

关于: [仅root用户]此解决方案涉及阻止对temp(缓存)文件夹的写访问,该文件夹用于Google下载其系统应用程序(例如Google Play服务,Instant Apps的Google Play服务等)。由于它很简单,解释一切,看起来很多。之后,安装新应用程序实际上分为3个步骤,该过程类似于在PC上安装程序。


背景:在我的系统下,文件夹的工作方式如下:

1)/data/data/com.android.providers.downloads/cache
*这是安装Google系统更新(以及新系统应用程序)的文件夹。
*不幸的是,此文件夹还用于下载普通的新应用程序。因此,您不能只是永久性地阻止它。下载新的应用程序时,您必须能够阻止/取消阻止它。

2)/mnt/sdcard/Android/data/com.android.vending/files
*此文件夹用于更新常规(非Google系统应用)。因此,在更新您的常规应用(例如Facebook,游戏等)时,无需阻止此操作,也无需做任何特别的事情。


解决方案:上面的缓存文件夹在正常操作期间保持锁定状态。当您要安装新应用程序时,总体过程如下(尽管大多数情况下是自动化的):(1)解锁缓存文件夹(2)锁定应用程序文件夹,以防它在解锁并安装时潜行。(3)从商店下载新应用(4)将下载的程序从安装文件夹复制到另一个位置,并使用默认名称(download.apk)重命名。(5)清除并锁定缓存文件夹(6)解锁应用文件夹( 7)单击apk文件进行安装。

显然,您不想每次都在终端上键入此内容,因此这是自动化的步骤。他们涉及使用两个附加应用程序以及安装BusyBox(以便能够通过脚本使用chattr命令)

  1. 锁定解锁是通过名为Gscript的应用程序实现的。您可以使用任何其他可以执行脚本的应用程序。谷歌商店中有一个版本,但对我和其他人崩溃。这里有一个稳定的fork:https : //bitbucket.org/Equidamoid/gscript(感谢作者的帖子:https : //stackoverflow.com/a/20328927/7609435)只需将这两个脚本粘贴到此处。(均需要SU)

    A)下载前执行- 锁定应用程序/解锁缓存

    chattr +i /data/data/* chattr +i /data/data chattr +i /data/app/* chattr +i /data/app chattr -i /data/data/com.android.providers.downloads/cache

    B)下载完成后并复制文件后执行- 清除并锁定缓存/解锁应用程序

    rm /data/data/com.android.providers.downloads/cache/* chattr +i /data/data/com.android.providers.downloads/cache chattr -i /data/data/* chattr -i /data/data chattr -i /data/app/* chattr -i /data/app

  2. 当Play商店显示“下载失败”时,您将知道该应用已下载。会说是因为它无法安装apk,但实际上下载成功,它位于缓存文件夹中。在运行上面的脚本(B)之前,您必须将文件从缓存文件夹移动到其他位置。您当然可以使用任何应用程序进行操作,但是我喜欢使用Total Commander,因为它可以有两个窗格并且支持书签(我向其中添加了缓存)。因此,将其移动并将文件从默认名称重命名为其他名称,然后运行上面的(B)脚本。另请注意,在复制APK时,它应带有该应用程序的图标。如果具有默认图标,则可能是由于其他不相关的原因导致下载损坏,因此您可以尝试再次下载。

  3. 现在,缓存文件夹已清除并锁定,并且应用程序文件夹已解锁。(您可以确保100%确保缓存文件夹为空,但是我怀疑这是必要的)。现在,您可以安装下载的APK。

注意1:如果您点击一个新的下载文件,并且说“挂起”,只是(强制)关闭Google Play并重新启动它,它应该会自动开始下载。

注意2:我仅使用Android:6.0.1 / MIUI:8.5.3.0进行了测试,因此该解决方案可能并不通用。检查是否具有缓存文件夹,以及是否正在将Google Play服务的下载文件上传到该文件夹​​(一旦上传完成,它会在那里保留一段时间)。

警告:可以将缓存文件夹保持锁定状态,但是,如果在这些数据文件夹被锁定的情况下碰巧重新启动手机,则手机将无法启动。而且,您需要手动进行操作,并从TWRP Shell中进行更改。

PS:我知道此解决方案并不适合每个人,但是如果您最关心的是稳定性并保持数据使用受控制,那么此方法暂时有效。希望有人会提供比这更好的答案。


免责声明:由于您的手机不再自动更新,因此如果以前的Google系统存在漏洞,您可能会暴露在外。但是,就我个人而言,当未经明确许可就可以安装某些东西时,我会考虑一个漏洞。
艾米(Emil)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.