如何摆脱Google Play商店中给定应用程序的更新通知?


40

一般问题

我的设备上安装了版本X的应用X。出于某种原因,我不想将其更新为任何较新的版本(Y + z)。不过,Google Play商店应用始终会列出X的更新,这使我无法进行简单的“全部更新”。我的问题,只用一句话:

如何从“可用更新”列表中永久隐藏X的更新?


具体例子

首先,我知道还有其他选择,例如AppBrain Market App,它可以很好地处理此问题(跳过此更新,跳过所有以后的更新)。我更喜欢一个“通用的解决方案”,它不依赖于一个3 党的市场应用。

其次,我知道Titanium Backup包括一个“市场医生”,可用于断开与Google Play的应用的连接。1但是,在我的特定情况下,它仅工作了几个小时:我断开了GTalk的连接,因为我不希望它被Hangouts取代。更新通知消失了几个小时,然后又回来了。不知道是什么恢复了“链接”。

第三,只是为了确保:我不是在谈论“自动更新”功能,例如如何仅对少数几个应用启用Play商店自动更新?。我本来希望与Google Play商店附近的产品不提供冻结应用程序的更新?,但无需“冻结”有问题的应用程序(我仍想使用,但要安装的版本中可用,而不是可用的“未来版本”中)。

第四:不,在这里无法卸载有问题的应用程序,尽管这样可以完全隐藏将来不会显示的任何更新:)“冻结”也不是,因为该应用程序会定期使用。

第五:我的GTalk示例有一个相关问题:gApps zip中包含的应用是否可以通过Google Play更新?但是,我要相反:没有更新。


很有可能以某种特定方式处理了“ Google Apps”(以及其他预装的应用程序),并以某种方式自行恢复了它们的“市场链接”。对于这种情况,我的问题包括:如何防止这种情况发生?


更新资料

XDA上有一个线程讨论同样的问题。直到最近,“用户安装的应用程序”的一种解决方法是先将其卸载,然后再加载它们.apk-但即使这样也无法正常工作。嗯,.apk使用其他密钥重新签名可能适用于用户应用。但是对于预安装的应用程序,两者都将失败(无法将其侧载以覆盖;不同的签名将完全拒绝安装)。

而且,有些“ joel.bou ..” 提出了一个问题。尽管被遮住了,但不难猜测:那就是乔尔·布尔夸德。如果真的是他,那确实是个问题(对于那些不知道的人:Joël是Titanium Backup的开发人员)。让我引用这个问题:

记录:在Android Market时代,可以使用系统工具(例如Titanium Backup)“附加”或“分离”应用程序(在有根设备上)。但是如今(使用Google Play商店应用)这几乎变得不可能了,因为完整的应用列表似乎是从Google的服务器同步的,用户对此无法控制。

这就解释了为什么与Titanium Backup之类的应用程序分离不再是永久的。恐怕我问过不可能的事了。但是我过去对其他问题也有同样的想法,令人惊讶的是这里找到了解决方案。所以我还没有放弃对这一希望!


1: eldarerathis 在这篇文章中对此做了解释(感谢Firelord 对此进行了挖掘!)


2
感谢您提出这个话题。您现在对我对去年在此线程中证明的应用程序的看法有所转变:问题39180-永久指示向市场申请应拒绝升级
wbogacz

1
是的,这是相关的。但是geffchang在回答中说的是我已经尝试了失败的尝试:使用Titanium Backup从Playstore分离应用程序。显然,这不适用于预安装的Google应用。
的Izzy

@Firelord能否在一个答案中总结一下(最好是带有SQL语句的提示)?不知道我是否要实现它(将在随后看到),但是我看到它可以工作:预先知道受影响的应用程序(包括它们的程序包名称),因此“静态” SQL脚本可以创建一次(一个用于每个数据库)。然后,使用例如Taskersqlite*每天执行脚本(针对那些数据库使用二进制文件)(可选:将其链接到init.d启动脚本)。绝对值得至少+1。感谢您的提示-并提前给出答案:)
Izzy

@Izzy上面的评论,您现在知道如何处理。:)并且,这里eldarerathis ♦已经解释了TiBa中的“从市场分离”实际上是做什么的(编辑)。您可能想要包含该答案与您的问题的链接。localappstate.db
Firelord

@Firelord确实。基本上,这就是您所建议的 -就您而言,它不需要TiBu。考虑哪个:TiBu有一个调度程序。您可以过滤应用。应该可以为应用定义一个过滤器以使其“静音”,并通过该调度程序每天两次“分离”它们作为替代解决方案。如果时间允许,也许我会玩所有……
Izzy

Answers:


14

注意事项

  • OP已经知道细节,但是我在考虑其他读者的基础上进行了详细说明。
  • 我假设设备已植根,并且我的解决方案已在运行Play商店 v5.6.8的Android 4.2、4.4和5.0上进行了测试。(抱歉!无法在Kitkat上对其进行测试,但没有理由认为它不起作用。)

Craig解决方案实际上是相当不错的,如果可以使用Tasker以某种方式(自定义小部件)执行该解决方案,那么一切将会非常顺利。

Anan答案也可以通过pm disable <PKG>Tasker中使用来完成任务,但是只要Play商店正在更新列表,就不能使用该喜爱的应用程序,有些用户不希望这样做。

而且我从未尝试过Changelog Droid,所以无法发表评论。

但是我还有另一种方法可以完成任务,在GUI中不是那么干净但是很好。开始了:

Play商店的数据库位于/data/data/com.android.vending/databases/。有三个数据库值得考虑 library.dblocalappstate.dbpackage_verification.db

  • library.db-它有一个名为表ownership这将列出你的应用程序不断从Play商店安装了所有谷歌Play商店帐户关联到他们。请注意,这些应用程序也包括您很久以前从Play商店安装并随后卸载的那些应用程序。
  • localappstate.db-这有一个名为的表appstate,该表将列出设备中当前安装的所有用户应用程序。从Play商店安装的应用程序也会显示该应用程序的标题,但侧面加载的应用程序不会显示。
  • package_verification.db-如果您在Android的“设置”下启用了“验证应用”,则会显示该数据库。它有一个名为verification_cache具有用于验证的应用程序列表的表。
  • suggestions.db-此处不相关,但其中有一个名为的表格suggestions,其中列出了您使用Play商店搜索栏进行的所有搜索(关键字)的列表。

请注意,我没有任何根据来证明我的主张,这都是我的个人经历。我们鼓励您不同意(有证据),以便进一步提高答案的质量。


现在,回到问题所在。在我的Lollipop上,我能够从更新列表中删除37个应用程序,只剩下一个我使用“全部更新”来进一步测试解决方案的应用程序。效果很好!

所需步骤:

  1. 强制关闭Play商店以避免任何数据损坏,因为我们需要编辑其数据库。

  2. 从以下位置删除应用程序的所有权library.db:我已经使用过sqlite3(如果没有,请使用SQLite安装程序安装Root)。我使用了一个非常简单的查询,该查询通过使用值标识行来从数据库中删除记录(行)。要知道进一步sqlite3使用此资源的用途。

    删除所有权的一般命令为:

    sqlite3 /data/data/com.android.vending/databases/library.db "DELETE from ownership where doc_id='<PKG_NAME>'"
    

    替换<PKG_name>为应用程序的程序包名称。例如,对于Chrome浏览器,程序包名称为com.android.chrome

    您可以使用App BrowserOS Monitor查找应用程序的程序包名称,也可以直接参考以下问题:查看应用程序的完整程序包名称?

  3. localappstate.db和删除应用程序的更多详细信息package_verification.db请注意,以上两个步骤已在我的设备上完成了工作。由于我不希望该应用程序因任何原因出现在更新列表中,因此我已从上述所有数据库中清除了所有详细信息。

    删除信息的一般命令localappstate.db是:

    sqlite3 /data/data/com.android.vending/databases/localappstate.db "DELETE from appstate where package_name='<PKG_NAME>'"
    

    并且,对于package_verification.db,它将是:

    sqlite3 /data/data/com.android.vending/databases/package_verification.db "DELETE from verification_cache where package_name='PKG_NAME'"
    

核心被覆盖。现在,关于执行:

  • 您可以制作一个脚本
  • 使用adb shelladb pull数据库,并使用SQLite软件(例如DBite for SQLite)在PC上进行编辑
  • 您可以使用SQLite EditoraSQLite Manager之类的应用程序手动删除应用程序记录
  • 使用任何终端应用程序,例如Android的Terminal Emulator-它允许使用小部件,您可以将其用作命令或脚本的快捷方式。看我的答案,知道如何做这样的捷径
  • 使用Tasker根据时间,应用程序或任何适合您的配置文件创建配置文件
  • 将脚本插入启动中,尽管我尚未尝试过,所以请问问OP

该应用虽然不会显示在已安装的应用或更新列表中,但肯定会显示在Play商店 “我的应用”下的“全部”中。我没有太多使用此存储,因此不再对它的其他设置进行测试。

此外,您可能会注意到,如果您之前在Play商店设置下未选中“可用的应用程序更新” ,并且在执行了上述命令后对其进行了检查,那么它将触发同步,并且显然会丢失您的更改。

另外,请注意,Google将所有信息保存在其服务器上。因此,迟早要更新数据库。在我的Lollipop设备中,我等待了大约24小时,但没有看到数据库中的任何更改,但是看到了YMMV。


对于非根设备

这是一种理论,我不会声称它会起作用,但是您可以尝试:

  1. 强行关闭,并采取adb backupPlay商店
  2. 提取备份,然后对数据库进行必要的更改。
  3. 将更改的文件打包到新的备份文件中,然后将其还原到设备中。

    如果您不知道要在PC上解压缩和打包ADB备份,请查看Android Backup Extractor(ABE)(它需要Java Runtime EnvironmentREADME.txt可供使用),它将.ab文件解压缩到一个文件中.tar,然后可以将其解压缩使用Ark,7zip,WinRAR等存档器。

    您可以使用DB Browser for SQLite对(可能)在提取的内容中找到的数据库进行更改apps/com.android.vending/db/

    另外,您可能会看到与Android备份相关的帖子,例如thisthisAdebar-这些都是Izzy建议的。

  4. 查看应用程序是否已从更新列表中删除。

  5. 如果您在第4步中成功完成,则可以无线方式运行ADB以在Android设备本身上(以某种方式)而不是使用PC来执行第1-4步- 如果成功,这对Tasker可能会非常有帮助。
  6. 好吧,如果您一直成功到第4步或第5步,那么您也许还可以回答:如何从Play商店更新列表中删除应用程序?:)

编辑:

好吧,我不是唯一这样认为的人:

  1. Android:停止更新Skype-非常接近,但添加了脚本部分,但没有任何理由
  2. (需要Root)供以后参考,如何在不等待首次展示的情况下更新Ingress。-不够好,因为library.db是罪魁祸首
  3. 获取应用程序的软件包名称
  4. [WIP]没有通话声音,阻止自动更新播放服务

非常彻底的回答,Firelord –如果可以的话,我会多次投票!只要时间允许,我一定会对此进行测试,然后再添加我的经验/其他提示。//对于非root用户的设备,我将停留在步骤3上。有关如何完成此操作的其他信息/链接吗?我们在这里有很长的帖子,但是看起来很复杂。对于#2,有一篇文章,以及ab2tarAdebar中的用意;)
Izzy

@Izzy谢谢!您提到的帖子链接指向ABE(Android备份提取器)。它可以很容易地打包和拆包。您需要的只是Java Runtime Environment。//而且,我本可以走得更远,因为我不喜欢徒劳无功,但是我adb restore突然退出了我的设备以进行任何应用还原,因此我无法真正检验自己的理论。:/
Firelord

糟糕,这很糟糕。您仍可能希望在答案中的步骤2 + 3上集成到ABE的链接。当然,一旦您的设备问题解决了,我们都会很高兴看到您如何“修复松动的一端” :)
Izzy

@Izzy完成!好吧,我的两个设备突然退出恢复,而第三个设备(一个Micromax设备,请记住Yureka:D)决定根本不检测USB连接。似乎我们将不得不等待很多时间才能看到那些松散的端头得到解决。:)
Firelord

1
大!我首先使用了钛合金的Scheduler,并且与Market分离,但我每天至少要运行4次,但有时还是显示Update(在我看来是极端的越野车Swype 3.0.x)。现在,我编写了一个Tasker任务,该任务每小时由Task概要文件运行一次。非常感谢:)一件事:我不得不使用Titanium sqlite3(/data/data/com.keramidas.TitaniumBackup/files/sqlite3),因为如果路径丢失会抛出此PIE错误。
法郎

7

我也遇到了几个应用程序的问题,特别是手电筒闪光灯应用程序,其中最新版本在Lollipop中无法很好地发挥作用,而旧版本却可以。

我过去的解决方案是使用Change Droid,但是如上所述,如果您打开Play商店,它可以返回。

目前,我使用的解决方案是从Titanium Backup运行预定任务,以将应用程序与市场分离。我目前每天运行4次。它在计划的时间在后台运行,因此,当我检查Play商店的更新时,它不存在。

我将不得不研究它,但是可能/应该有一种方法可以在Play商店开放时运行任务...不确定。

----编辑----有人要求提供有关TB设置的更多详细信息...

首先,您必须创建一个过滤器,仅选择要分离的应用程序。您可以在菜单下访问它。您将“元素”或应用添加到过滤器中,因此仅所选应用受到影响。确保在没有选择所有过滤器的情况下不运行分离:)

屏幕截图 屏幕截图

接下来,您必须在计划中应用过滤器。

屏幕截图 屏幕截图

如您所见,这仅是一个计划的活动毫秒,凌晨4点

完成后,您的预定任务将如下所示

屏幕截图

您将必须复制此文件并根据您希望它发生多少次来更改时间。

我将我的时间定在凌晨4点,中午8点和下午4点。似乎为我工作。

希望这可以使它更加清楚。如果您以结核病为工具,那么我相信这些筛查工具可以解决您的问题。

克雷格


我使用此解决方案已有几天,但完成后总会在信息栏中收到来自Titanium的消息。有点烦人,而且4个任务(在我的调度程序中)还不够,有时更新还是可以看到的。因此,现在我更喜欢Firelord的命令行解决方案,它可以由Tasker在后台完全完成并且可以正常工作:)
法郎

3

使用以下解决方案:

  1. 您不依赖于第三方的市场应用程序。
  2. 可以将其配置为绕过Google Play的更新通知。
  3. 您可以随时恢复应用程序“更新阻止”(允许您为将来的版本更新应用程序)
  4. 它不会卸载或冻结您使用的应用程序。
  5. 它也适用于Gapps。

有一个名为Changelog Droid的免费应用程序(以前是免费增值应用程序,现在免费提供完整功能)。通过它,您可以管理其他应用的更新(作为Google Play的中介)。

好处是您可以将应用程序发送到黑名单,而无需暂时或“永久”显示更新(直到您改变主意)。您还可以跟踪已卸载或从未安装但想要观察的应用程序的更新。我会在此响应的同时提供一些屏幕截图(以颜色标识不同的屏幕导航),以帮助您了解其工作原理。

如何将应用列入黑名单 列入黑名单的应用 列入白名单的应用

如何将应用“取消黑名单” 选项菜单 首选项

如何绕过Google Play通知 启用Changelog Droid的通知访问 显示系统应用程序(Gapps)

选择要显示的Gapps

唯一的缺点是,当您直接或从此应用程序打开Play商店时,将显示所有应用程序(包括您不想更新的应用程序,因为应用过滤器的是Changelog Droid,而不是Google Play本身,这是预期的)

Google Play仍会显示所有应用

但是,在Changelog Droid中,您可以通过按钮访问Google Play上的每个应用,然后分别进行升级。

抱歉:从Changelog Droid开始,当前没有一个步骤可以更新所有允许的应用程序,但是开发人员最终可能会实现它。

注意:我还没有针对您所描述的场景进行测试(我已经更新/替换了Talk / Hangouts),但可以在您的情况下使用。请记住不要打开Google Play的“ 我的应用”视图,这样就不会触发应用的自动更新。


1
非常感谢,弗朗西斯科!这让我想起了几年前的AppBrain Market App(因为他们自己的安装程序已关闭,所以最近没有尝试过)。那时,当他们的“快速Web安装程序”仍然有效时,您甚至可以在过滤后的列表上触发“全部更新” ...顺便说一句:访问“我的应用程序”不会为我触发任何更新,因为我已经变成了自动-完全关闭。猜猜我会尽快尝试您的解决方案;)
Izzy

1

在主应用程序设置或应用程序管理器中禁用该应用程序,然后打开Play商店,该应用程序不应列出。全部更新,并在全部更新完成后重新启用应用程序。我有一个同样的问题,一个txt消息应用程序,如果我更新它,我会收到难看的广告。.这是我的解决方法


1
尽管这可能行得通,但远非如此方便(涉及太多步骤,尤其是涉及多个应用程序时)。
伊兹

可以使用Tasker进行自动化
endolith,2015年

1

我知道这是一个旧线程。而且我了解到Ti Backup曾经用于从Play商店分离应用程序。但是我也明白,这不再起作用了。对于那些感兴趣的人,我创建了一个应用程序,可以很好地完成此任务。它被称为“ 在Play商店中隐藏更新”,价格约为1美元。其中有一段视频显示了该应用程序的工作情况。它确实需要root用户。


2
大卫,感谢您的努力!但是我不喜欢它的副作用,例如在带有应用内购买商品的应用或“我的应用”列表中。同时,我习惯于总是看到7个我不关心的更新-尽管我希望Google在其应用程序中添加一个类似于AppBrain的选项:跳过给定应用程序的一个(或全部)更新。顺便说一句:感谢您的开放性(公开您的应用程序)。我可以自由添加链接-但也要提到价格。
伊齐

1

我为root用户找到的解决方案是简单地/data/app/使用ZipSigner重新签名apk(在备份后在或您的TitaniumBackup文件夹中找到)并重新安装。


这并非总是一种选择(某些使用“共享资源”的应用程序的签名问题),但是对于某些人来说,可以解决。
伊齐

你能详细说明吗?好奇。
Drazen Bjelovuk

请参阅支持包签名伪造。这主要涉及预安装的应用程序以及来自同一供应商(通常是Google)的应用程序。由于我不再使用Google Playstore应用,因此不再遇到此问题所涉及的问题。
伊齐

有趣。猜猜这一切都取决于应用程序之间签名检查的普遍性。幸运的是,到目前为止,这对我来说不是问题。
Drazen Bjelovuk

诚然,这种情况下的麻烦很少见-但不能完全忽略;)
Izzy

0

我尝试使用应用程序“权限管理器”(我认为必须扎根)。我禁用了对我不想更新的应用不重要的权限(例如,在ES File Explorer中禁用了振动权限,在Quickpic中禁用了唤醒锁)。权限管理器重新编译该应用程序,卸载原始应用程序,然后重新安装新编译的应用程序。完成此操作后,我打开了Play商店,更新提醒不见了。


那将意味着操纵原始.apk文件(是的,有几种这样的应用程序可用:对于自己安装的应用程序,您可能不需要root用户,但需要在系统应用程序上运行)。我认为这是一种解决方法,但这不是我要采取的方法。不管怎么说,还是要谢谢你!
伊兹

0

另一位候选人刚刚出现在地平线上。我尚未对其进行测试,但听起来非常有前途:StorePrefs

  • 要求:
    • 植根设备
    • Xposed已安装
  • 承诺:
    • 阻止快速更新
    • 忽略一些更新(当您在Playstore的“我的应用程序”中拥有可用更新时,只要长按此更新即可忽略它)

作为Xposed模块,它应该能够解决我们迄今为止遇到的其他解决方案的缺陷:

  • 如果Play服务决定重新链接未链接的应用,则该模块应能够采取措施。因此,无需任何特殊的手工操作,无需Tasker设置
  • 无需手动摆弄SQLite数据库或 adb shell
  • 不需要辅助“更新检查器”(例如ChangelogDroid)
  • 没有.apk文件操作
  • 某些用户的唯一问题在非root用户的设备上和没有Xposed的设备上均不起作用

由于我已取消对设备进行信息公开化的功能,并且不再使用Playstore应用,因此我无法进行验证-因此欢迎那些有能力的人提供反馈:)


0

像Titanium Backup一样,您也可以使用3C Toolbox取消与Google Play商店的应用链接。到目前为止,这似乎是永久的。需要根。


1
我无法再验证这一点(摆脱了所有Google Apps),但可能与其他验证有关:“到现在为止”涵盖什么时间范围?也许3C Toolbox会持续关注并更新该设置?
伊兹

不确定> 5.0是否允许此更改生效。Google Play会自动重新连接应用程序。不幸的是,唯一关闭的是手动禁用自动更新并备份所需版本。
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.