Pytanie ogólne
Mam aplikację X zainstalowaną na moim urządzeniu w wersji Y. Z jakiegoś powodu nie chcę jej aktualizować do żadnej nowszej wersji (Y + z). Mimo to aplikacja Sklep Google Play zawsze wyświetla aktualizacje dla X, co powstrzymuje mnie przed prostym „aktualizowaniem wszystkich”. Moje pytanie, zadaj jedno zdanie:
Jak trwale ukryć aktualizacje dla X na liście „dostępnych aktualizacji”?
Konkretne przykłady
Po pierwsze, wiem, że istnieją alternatywy, takie jak np. AppBrain Market App , która może sobie z tym poradzić całkiem dobrze (pomiń tę aktualizację, pomiń wszystkie przyszłe aktualizacje). Wolę „rodzajowe rozwiązanie”, które nie zależą od 3 rd aplikacji partii rynkowej.
Po drugie, wiem, że Titanium Backup zawiera „lekarza rynku”, którego można użyć do odłączenia aplikacji od Google Play . 1 Jednak w moim konkretnym przypadku, który działał tylko przez kilka godzin: odłączyłem GTalk , ponieważ nie chcę, aby został zastąpiony przez Hangouts . Powiadomienie o aktualizacji zniknęło na kilka godzin, a potem wróciło. Nie mam pojęcia, co przywróciło „link”.
Po trzecie, dla pewności: nie mówię o funkcji „automatycznej aktualizacji”, jak omówiono np. W Jak włączyć automatyczną aktualizację Sklepu Play tylko dla kilku aplikacji? . Miałem raczej nadzieję na coś zbliżonego. Czy sklep Google Play nie zapewnia aktualizacji dla zamrożonych aplikacji? , ale bez potrzeby „zamrażania” danej aplikacji (której nadal chcę używać, ale w zainstalowanej wersji, nie w „przyszłej wersji” dostępnej).
Po czwarte: Nie, odinstalowanie aplikacji, o której mowa, nie jest tutaj opcją, chociaż idealnie ukryłoby to, że przyszłe aktualizacje nie będą wyświetlane :) Nie jest też „zamrażające”, ponieważ aplikacja jest używana regularnie.
Po piąte: na moim przykładzie GTalk pojawia się podobne pytanie: czy aplikacje zawarte w gApps zip są aktualizowane za pośrednictwem Google Play? Chcę jednak odwrotnie: brak aktualizacji.
Może się zdarzyć, że „Google Apps” (i inne wstępnie zainstalowane aplikacje) są obsługiwane w określony sposób i same przywracają swoje „linki rynkowe”. W tym przypadku moje pytanie obejmuje: Jak temu zapobiec?
Aktualizacja
W XDA jest wątek omawiający ten sam problem. Do niedawna obejściem dla „aplikacji instalowanych przez użytkownika” było ich odinstalowanie, a następnie sideload .apk
- ale nawet to przestało działać. Cóż, ponowne podpisanie .apk
przy użyciu innego klucza może działać w aplikacjach użytkowników. Oba jednak zawiodłyby w przypadku wstępnie zainstalowanych aplikacji (nie można ich pominąć, aby zastąpić; inna sygnatura całkowicie odmówiłaby instalacji).
Co więcej, istnieje problem zgłoszony w tym przez „joel.bou ..”. Nietrudno zgadnąć, choć wygaszone: to byłby Joël Bourquard. Jeśli to naprawdę on, to jest to naprawdę problem (dla tych, którzy nie wiedzą: Joël jest twórcą Titanium Backup ). Pozwól mi zacytować z numeru:
Dla przypomnienia: w dniach Android Market można było „dołączać” lub „odłączać” aplikacje (na zrootowanych urządzeniach) za pomocą narzędzia systemowego, takiego jak Titanium Backup. Ale obecnie (z aplikacją Sklep Google Play) stało się to prawie niemożliwe, ponieważ pełna lista aplikacji wydaje się synchronizować z serwerami Google, a użytkownik nie ma nad tym kontroli.
To wyjaśnia, dlaczego odłączanie za pomocą aplikacji takich jak Titanium Backup nie jest już trwałe. I obawiam się, że poprosiłem o niemożliwe. Ale tak samo myślałem w przeszłości z innymi pytaniami i zaskakująco znalazłem tutaj rozwiązania. Więc nie tracę jeszcze nadziei w tej sprawie!
1: to, co to robi, wyjaśnia Eldarerathis w tym poście (dzięki Firelord za wykopanie tego!)
sqlite*
plikiem binarnym przeciwko tym bazom danych) (opcjonalnie: połącz go ze skryptami startowymi init.d). Zdecydowanie wart co najmniej +1. Dzięki za podpowiedź - i z góry za odpowiedź :)eldarerathis ♦
wyjaśnił tutaj, co właściwie robi „Odłącz od rynku” w TiBa (edycjalocalappstate.db
). Możesz dołączyć link tej odpowiedzi do swojego pytania.Odpowiedzi:
Uwagi :
(Niestety, nie mogłem go przetestować na Kitkat, ale nie ma powodu, by sądzić, że to nie zadziała).Rozwiązanie przez Craiga jest całkiem dobra, a jeśli w jakiś sposób mogą być wykonywane (zwyczaj widget) z Tasker , potem wszystko pójdzie gładko.
Odpowiedź przez Anan można również wykonać zadanie używając
pm disable <PKG>
w Tasker , ale nie można używać jako faworyt aplikację dopóki Sklep Play aktualizuje listę, którą niektórzy użytkownicy nie woleliby.I nigdy nie próbowałem Changelog Droid , więc nie mogę komentować.
Ale mam inny sposób na załatwienie sprawy, nie tak czysty w GUI, ale dobry. No to ruszamy:
Play Store ma swoje bazy danych
/data/data/com.android.vending/databases/
. Istnieją trzy bazy danych, które warto rozważyć .library.db
,localappstate.db
,package_verification.db
.library.db
- ma tabelę o nazwie,ownership
która zawiera listę aplikacji, które kiedykolwiek instalowałeś ze Sklepu Play wraz ze wszystkimi powiązanymi z nimi kontami Google Play Store. Pamiętaj, że kiedykolwiek zawiera te aplikacje, które kiedyś instalowałeś w Play Store dawno temu i odinstalowałeś później.localappstate.db
- zawiera tabelę o nazwie,appstate
która zawiera listę wszystkich aplikacji użytkownika obecnie zainstalowanych w urządzeniu. Te zainstalowane ze Sklepu Play również pokazywałyby tytuł aplikacji, ale te pobrane z boku nie.package_verification.db
- ta baza danych pojawi się, jeśli włączyłeś „Weryfikuj aplikacje” w „Ustawieniach” Androida. Ma tabelęverification_cache
o nazwie zawierającą listę aplikacji do weryfikacji.suggestions.db
- nie dotyczy tutaj, ale ma tabelęsuggestions
o nazwie zawierającą listę wszystkich wyszukiwań (słów kluczowych) wykonanych za pomocą paska wyszukiwania w Sklepie Play.Zwróć uwagę, że nie mam źródła, które potwierdziłoby moje roszczenie, tutaj są wszystkie osobiste doświadczenia. Zachęcamy Cię, by się nie zgadzać (z dowodami), aby jakość tej odpowiedzi mogła zostać jeszcze bardziej poprawiona.
Wróćmy do pytania. Na moim Lollipop mogłem usunąć 37 aplikacji z listy aktualizacji i zostawiłem tylko jedną aplikację, dla której użyłem „Aktualizuj wszystko”, aby dalej przetestować rozwiązanie. Działa idealnie!
Wymagane kroki:
Wymuś zamknięcie Sklepu Play, aby uniknąć uszkodzenia danych, ponieważ musimy edytować jego bazę danych.
Usuń własność swojej aplikacji z
library.db
: Użyłemsqlite3
(użyj instalatora SQLite dla rootowania, jeśli go nie masz). Użyłem bardzo prostego zapytania, które usunęłoby rekord (wiersz) z bazy danych, identyfikując wiersz za pomocą wartości. Aby dowiedzieć się więcej na temat wykorzystania,sqlite3
skorzystaj z tego zasobu .Ogólne polecenie usunięcia własności to:
Zamień na
<PKG_name>
nazwę pakietu swojej aplikacji. Np. Dla przeglądarki Chrome nazwa pakietu tocom.android.chrome
.Możesz znaleźć nazwę pakietu aplikacji za pomocą przeglądarki aplikacji lub OS Monitora , lub po prostu odnieść się do pytania: wyświetlić pełną nazwę pakietu aplikacji?
Usunąć aplikacji z dalszych szczegółów
localappstate.db
ipackage_verification.db
: Uwaga , że powyższe dwa kroki na pracę w moich urządzeń. Ponieważ nie chcę, aby aplikacja wyświetlała się z jakiegokolwiek powodu na liście aktualizacji, usunąłem wszystkie szczegóły ze wszystkich wyżej wymienionych baz danych.Ogólne polecenie usuwania informacji
localappstate.db
to:I
package_verification.db
byłoby to:Rdzeń jest pokryty. Teraz, jeśli chodzi o wykonanie:
adb shell
lubadb pull
baz danych i edytuj na komputerze za pomocą oprogramowania SQLite (takiego jak DB Browser for SQLite )Aplikacja nie będzie jednak wyświetlana na zainstalowanych aplikacjach ani liście aktualizacji, ale na pewno pojawi się w „Wszystkich” w „Moich aplikacjach” w Sklepie Play . Nie korzystam z tego sklepu, więc nie testowałem już innych ustawień.
Ponadto możesz zauważyć, że jeśli wcześniej odznaczyłeś opcję „Dostępne aktualizacje aplikacji” w ustawieniach Sklepu Play i sprawdzisz ją po wykonaniu tych poleceń, spowoduje to synchronizację, a twoje zmiany, jak widać, zostaną utracone.
Pamiętaj też, że Google przechowuje wszystkie informacje na swoich serwerach. Wcześniej czy później bazy danych zostaną zaktualizowane. W moim urządzeniu Lollipop czekałem około 24 godzin i nie zauważyłem żadnych zmian w bazach danych, tylko YMMV.
Dla niezrootowanych urządzeń
To teoria i nie twierdzę, że to zadziała, ale możesz spróbować:
adb backup
od Sklepie Play .Spakuj zmienione pliki do nowego pliku kopii zapasowej i przywróć je w urządzeniu.
Jeśli nie wiesz, jak rozpakować i spakować kopię zapasową ADB na PC, spójrz na Android Backup Extractor (ABE) (potrzebuje Java Runtime Environment i ma
README.txt
do użytku), który rozpakowałby.ab
plik do pliku,.tar
który można następnie rozpakować używając archiwizatora takiego jak Ark, 7zip, WinRAR i więcej.Możesz użyć DB Browser for SQLite, aby wprowadzić zmiany w bazach danych znajdujących się w wyodrębnionej zawartości (prawdopodobnie)
apps/com.android.vending/db/
.Możesz także rzucić okiem na posty związane z tworzeniem kopii zapasowych Androida, takie jak ten , ten i Adebar - wszystkie sugerowane przez Izzy .
Sprawdź, czy aplikacja zniknęła z listy aktualizacji.
Edytować:
Nie jestem jedynym, który wymyślił to w ten sposób:
library.db
jest głównym winowajcąźródło
ab2tar
w Adebar ;)adb restore
nagle kończy pracę w celu przywrócenia dowolnej aplikacji, więc nie mogę naprawdę przetestować własnej teorii. : /Jest to dla mnie problem również z kilkoma aplikacjami, w szczególności aplikacją z latarką, w której najnowsza wersja nie działa dobrze z Lollipop, ale poprzednia wersja tak.
W przeszłości moim rozwiązaniem było użycie Change Droid, ale jak wspomniano powyżej, jeśli otworzysz sklep Play, może on wrócić.
Obecnie używam rozwiązania, aby uruchomić zaplanowane zadanie z Titanium Back up, aby odłączyć aplikację od rynku. Obecnie prowadzę to 4 razy dziennie. Działa w tle w zaplanowanym czasie, więc kiedy sprawdzam dostępność aktualizacji w Sklepie Play, nie ma go.
Będę musiał to sprawdzić, ale może / powinien istnieć sposób na uruchomienie zadania, gdy sklep z zabawami jest otwarty ... nie jestem pewien.
---- Edytuj ---- Niektórzy poprosili o więcej szczegółów na temat ustawienia TB ...
Najpierw musisz utworzyć filtr, wybierz tylko te aplikacje, które chcesz odłączyć. Dostęp do tego można uzyskać w menu. Dodajesz „Elementy” lub aplikacje do filtra, więc wpływ mają tylko wybrane aplikacje. Upewnij się, że nie uruchamiasz odłączania ze wszystkim zaznaczonym, bez zastosowanego filtra :)
Następnie musisz wykonać harmonogram z filtrem zastosowanym do harmonogramu.
Jak widać, dotyczy to tylko jednego zaplanowanego zdarzenia ms, o 4 rano
Po zakończeniu zaplanowane zadanie będzie wyglądać mniej więcej tak
Będziesz musiał to powtórzyć i zmienić czas w zależności od tego, ile razy ma to się zdarzyć.
Mam zestaw ustawiony na 4 rano 8 rano południe i 4 po południu. Wydaje się dla mnie pracować.
Mam nadzieję, że to sprawia, że jest to trochę bardziej jasne. Jeśli korzystasz z TB, jestem pewien, że dzięki tym screenom możesz to wypracować.
Craig
źródło
Z następującym rozwiązaniem:
Istnieje bezpłatna aplikacja Changelog Droid (wcześniej była to aplikacja freemium, teraz ma pełną funkcjonalność za darmo). Dzięki niemu możesz zarządzać aktualizacjami swoich innych aplikacji, będąc pośrednikiem w Google Play.
Zaletą jest to, że możesz wysyłać aplikacje na czarną listę , pomijając pokazywanie aktualizacji tymczasowo lub „na stałe” (dopóki nie zmienisz zdania). Możesz także śledzić aktualizacje aplikacji, które odinstalowałeś lub których nigdy nie instalowałeś, ale chcesz je obserwować. Tej odpowiedzi towarzyszą niektóre zrzuty ekranu (identyfikujące kolory za pomocą różnych nawigacji ekranu), abyś mógł zrozumieć, jak to działa.
Jedynym minusem jest to, że po otwarciu Sklepu Play, bezpośrednio lub z tej aplikacji, zostaną wyświetlone wszystkie aplikacje (w tym te, których nie chcesz aktualizować, ponieważ ta, która stosuje filtr, to Changelog Droid, a nie sama Google Play, tego oczekiwano)
Ale w Changelog Droid możesz uzyskać dostęp do każdej aplikacji w Google Play za pomocą przycisku, a następnie zaktualizować ją indywidualnie.
Niestety: obecnie nie ma opcji, aby zaktualizować wszystkie dozwolone aplikacje w jednym kroku z Changelog Droid, ale być może programista może to ostatecznie zaimplementować.
Uwaga: nadal nie testowałem opisanego scenariusza (już zaktualizowałem / zastąpiłem Talk / Hangouts), ale może to działać w twoim przypadku. Pamiętaj tylko, aby nie otwierać widoku Moje aplikacje w Google Play, aby nie uruchomiła automatycznej aktualizacji aplikacji.
źródło
Wyłącz aplikację w głównych ustawieniach aplikacji lub w menedżerze aplikacji i otwórz sklep Play, a aplikacja nie powinna być na liście. Zaktualizuj wszystko i po prostu ponownie włącz aplikację po zakończeniu aktualizacji. Mam ten sam problem, aplikację do wysyłania wiadomości tekstowych, że jeśli zaktualizuję, otrzymam brzydkie reklamy. To moja praca
źródło
Wiem, że to stary wątek. Rozumiem, że Ti Backup działał przy odłączaniu aplikacji ze Sklepu Play. Ale rozumiem również, że to już nie działa. Dla tych, którzy są zainteresowani, stworzyłem aplikację, która robi to całkiem nieźle. Nazywa się to Ukryj aktualizacje w Sklepie Play i jest dostępny za ~ 1 USD. Jest wideo pokazujące aplikację w pracy. To wymaga rootowania.
źródło
Rozwiązaniem, które znalazłem dla użytkowników root, jest po prostu ponownie podpisać apk (znaleziony w
/data/app/
folderze TitaniumBackup po utworzeniu kopii zapasowej) za pomocą ZipSigner i ponownie zainstalować.źródło
Próbowałem użyć aplikacji „Permission Manager” (chyba rootowanie). Wyłączam uprawnienie, które nie jest ważne dla aplikacji, której nie chcę aktualizować (np. Wyłączone uprawnienie wibracji w ES File Explorer i wakelock w Quickpic). Menedżer uprawnień ponownie kompiluje aplikację, odinstalowuje oryginał i ponownie instaluje nowo skompilowaną aplikację. Po wykonaniu tej czynności otworzyłem Sklep Play i przypomnienia o aktualizacji zniknęły.
źródło
.apk
plikami (i tak, dostępnych jest kilka takich aplikacji: w przypadku aplikacji zainstalowanych samodzielnie prawdopodobnie nie potrzebujesz roota, ale do pracy na aplikacjach systemowych to zrobiłbyś). Policzyłbym, że to obejście, ale nie podchodzę do tego. W każdym razie dzięki!Na horyzoncie pojawił się inny kandydat. Jeszcze go nie testowałem, ale brzmi bardzo obiecująco: StorePrefs .
Będąc modułem Xposed , powinien być w stanie obejść wady innych rozwiązań, które do tej pory mieliśmy:
adb shell
.apk
plikamiPonieważ usunąłem googoglizację z moich urządzeń i nie używam już aplikacji Playstore, nie mogę zweryfikować - więc proszę o opinie od tych, którzy są mile widziani :)
źródło
Podobnie jak tytanowa kopia zapasowa, możesz również odłączyć aplikację od sklepu Google Play za pomocą 3C Toolbox . Do tej pory wydaje się to być trwałe. Wymagane rootowanie.
źródło