aplikacja instalacyjna zablokowana przez Play Protect

117

Podczas próby zainstalowania podpisanej aplikacji (app-release.apk) wyświetlany jest alert „Zablokowany przez Play Protect”, a aplikacja nie jest instalowana. Jednak niepodpisaną aplikację (app-debug.apk) można zainstalować bez problemów.

Komunikat o błędzie:

Play Protect nie rozpoznaje dewelopera tej aplikacji. Aplikacje od nieznanych programistów mogą czasami być niebezpieczne.

Dlaczego wystąpił ten błąd? Jakie jest rozwiązanie?

obraz błędu

Mostafa Azadi
źródło
2
Miałem również ten sam problem z moją aplikacją. Chociaż moje konto Google zostało zawieszone, gdy próbowałem opublikować moją aplikację. Z tego co zdaję sobie sprawę, lista kontrolna Google Update Play Protect z zawieszoną nazwą pakietu, a później, jeśli spróbujesz zainstalować tę samą nazwę pakietu, Play Protect zacznie dawać fałszywe ostrzeżenie. Utworzyłem nową aplikację z zawieszoną nazwą pakietu i tylko główną aktywnością, bez dodanego innego kodu. Podpisano za pomocą zawieszonego magazynu kluczy apk i próbowano zainstalować. Zdumiewająco ochrona przed grą pokazała szkodliwy alert, jak pokazano w Twoim pytaniu. Próbowałem również stworzyć nowy pakiet ze wszystkimi klasami zawieszonych aplikacji, ale bez powiadomienia przez grę.
Panache,
Zobacz rozwiązanie tutaj: stackoverflow.com/a/54976730/984471
Manohar Reddy Poreddy
ten sam problem dla mnie, ale znalazłem inny Keystore, który nawet nie opublikował aplikacji w Google Play, podpisz aplikację poprawnie, a to okno dialogowe się nie pojawi! nawet jeśli utworzysz nową aplikację, problem jest po wyjęciu z pudełka. Mam wiele aplikacji i inne Keystore działają poprawnie z moją nową aplikacją! Nie wiem, jak google zdecydować o nieznanym twórcy aplikacji! Nigdy nie mam konta na konsoli Google Play.
hamed hosiny

Odpowiedzi:

61

Znalazłem rozwiązanie: przejdź do poniższego łącza i prześlij swoją aplikację.

Formularz przesyłania odwołań w Play Protect

Po kilku dniach problem zostanie rozwiązany

Mostafa Azadi
źródło
3
@MostafaAzadi Jaki był dokładny powód?
Behnam Maboudi
3
Jeśli nie używasz SSL i włączasz komunikację w postaci zwykłego tekstu w manifeście, to jest powód.
DaniloDeQueiroz,
1
jeśli masz problem z adresem URL, aby pobrać plik APK, jest to pomocne: stackoverflow.com/a/56513945/9710197
Mostafa Azadi
@DaniloDeQueiroz Czy jesteś absolutnie pewien, że problem jest spowodowany komunikacją w postaci zwykłego tekstu? Więc usunięcie android:usesCleartextTraffic="true"powinno rozwiązać problem, prawda? Dzięki.
AnthoPak
1
Dzień dobry. Nie mogę złożyć wniosku o ochronę w Play. Jak przesłać apk? Otrzymuję wiadomość e-mail z informacją, że nie można pobrać apk, chociaż udostępniam bezpośrednie linki do pobierania za pośrednictwem GitHub.
SayantanRC
40

Znalazłem lepsze rozwiązanie. Jeśli chcesz zdobyć ten problem należy otworzyć swój sklep Play, w menu znaleźć Zagraj Protect tutaj i tutaj odznacz urządzenia do skanowania w poszukiwaniu zagrożeń bezpieczeństwa .

molood ayat
źródło
78
To nie jest rozwiązanie. Kiedy musimy dystrybuować aplikację do klienta lub użytkownika (bez sklepu playstore), nie możemy tego użyć
silwar
1
Dzięki, działało dobrze dla mnie za szybką jednorazową poprawkę dla aplikacji ładowanej z boku.
Günter Zöchbauer
1
@silwar Nie sądzę, że problem występuje na urządzeniach bez Sklepu Play. Ponieważ blokerem jest Sklep Play.
Jemshit Iskenderov
@JemshitIskenderov W moim przypadku był to problem z uszkodzonym magazynem kluczy .. Zmieniłem go dla mojej aplikacji (aplikacja korporacyjna, więc nie została opublikowana na playstore) i problem został naprawiony
silwar
1
W moim przypadku problem polegał na korzystaniu z usług gier Google w przypadku nieopublikowanych aplikacji.
Sattar Hummatli
18

Spróbuj utworzyć nowy magazyn kluczy i zastąpić starym, a następnie odbudować nowy podpisany plik APK.

Aktualizacja: Pamiętaj, że jeśli korzystasz z połączenia http z serwerem, powinieneś użyć SSL.

Spójrz na: https://developer.android.com/distribute/best-practices/develop/understand-play-policies

Amirhosein Heydari
źródło
2
Może to dlatego, że maksymalna ważność większości kupowanych certyfikatów wynosi około ostatnich lat. Ustaw datę wygaśnięcia większą niż 50 lat.
Amirhosein Heydari
1
Stworzyłem tę aplikację w tym miesiącu i ustawiłem ważność (lata) podpisu na 25 lat
Mostafa Azadi
1
@MostafaAzadi, Amirhosein Mam tutaj ten sam problem. znalazłeś coś
Behnam Maboudi
17
Tak, wydaje się to śmieszne. Co gorsza, wyskakujące okienko pojawia się tylko przy pierwszej instalacji aplikacji. Nawet jeśli ją zaakceptuję i zainstaluję, przy następnej instalacji loguje się „Instalacja zablokowana po cichu”, a w interfejsie użytkownika pojawia się komunikat „Aplikacja niezainstalowana”. W tym momencie tylko całkowite wyłączenie Play Protect lub wyczyszczenie danych Sklepu Play z ustawień powoduje ponowne wyświetlenie wyskakującego okienka. Dzieje się tak z kluczem, który wygenerowaliśmy za pomocą tego samego skryptu, co dziesiątki naszych innych aplikacji, które znajdują się w Sklepie Play i działają dobrze.
zsmb13
8
Khosham miad faghat ma irani ha b hamchin moshkelayi bar mikhorim
MoHammaD ReZa DehGhani
12

Google Play znajduje Cię jako programistę za pośrednictwem Twojego magazynu kluczy .

a być może adres IP Twojego kraju jest zablokowany w Google, gdy generujesz nowy magazyn kluczy.

zmień swój adres IP i wygeneruj nowy magazyn kluczy, problem zostanie rozwiązany.

jeśli ci się nie udało, użyj innego Gmaila w Android Studio i wygeneruj nowy magazyn kluczy.

Meisam Beiranvand
źródło
Zrobiłeś to? ponieważ mam ten problem, a moje aplikacje są uwierzytelnione z Iranu i nie mogą wysłać wniosku z odwołania (nie mogą go przetestować), więc jak mogę go rozwiązać? dzięki stary
Nima habibkhoda
4
Na mnie to nie zadziałało! Używam narzędzia keytool do tworzenia magazynu kluczy
Amir Shabani
11

Istnieją trzy możliwości pozbycia się tego ostrzeżenia:

  1. Musisz wyłączyć Play Protect w Sklepie Play -> Play Protect -> Ikona ustawień -> Skanuj urządzenie pod kątem zagrożeń bezpieczeństwa
  2. Opublikuj aplikację w sklepie Google Play
  3. Prześlij odwołanie do Play Protect .
Ali
źródło
7

Dodaję tę odpowiedź dla innych, którzy wciąż szukają rozwiązania tego problemu, jeśli nie chcesz przesyłać swojej aplikacji do sklepu playstore, a tymczasowo istnieje obejście tego problemu.

Google udostępnia interfejs API do weryfikacji urządzeń zabezpieczających, który należy wywołać tylko raz w aplikacji, a następnie aplikacja nie zostanie zablokowana przez Play Protect:

Oto linki:

https://developer.android.com/training/safetynet/attestation#verify-attestation-response

Link do przykładowego projektu kodu:

https://github.com/googlesamples/android-play-safetynet

Panie Patel
źródło
1
@Ahmad oczywiście działa, wszyscy moi koledzy używają tego interfejsu API do rozwiązania problemu, który do tej pory przekazaliśmy klientom ponad 20 różnych apek i działa idealnie
Mr. Patel
2

jedynym rozwiązaniem działającym dla mnie było użycie narzędzia Java Keytool i wygenerowanie pliku. keystoreplik wiersza poleceń, a następnie użyj tego .keystorepliku do podpisania mojej aplikacji

Możesz znaleźć keytool java w tym katalogu C:\Program Files\Java\jre7\bin

otwórz okno poleceń, przejdź do tego katalogu i wprowadź takie polecenie

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

Keytool wyświetla monit o podanie haseł do magazynu kluczy, imienia i nazwiska, firmy itp. zwróć uwagę, że w ostatnim monicie musisz wpisać tak.

Następnie generuje magazyn kluczy jako plik o nazwie my-release-key.keystore w katalogu, w którym się znajdujesz. Magazyn kluczy i klucz są chronione przez wprowadzone hasła. Magazyn kluczy zawiera pojedynczy klucz ważny przez 10000 dni. Alias ​​to nazwa, której będziesz używać później, aby odwołać się do tego magazynu kluczy podczas podpisywania aplikacji.

Więcej informacji na temat narzędzia Keytool można znaleźć w dokumentacji pod adresem : http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

a więcej informacji na temat podpisywania aplikacji na Androida znajdziesz tutaj: http://developer.android.com/tools/publishing/app-signing.html

easazade
źródło
3
jeśli jest głos przeciw, chciałbym wiedzieć, dlaczego. jeśli robię coś źle, chciałbym wiedzieć
easazade
2

Jeśli używasz niektórych trackerów, takich jak google analyticslub, amplitudei próbujesz wydać swoją aplikację na platformach innych niż Google Play, ten błąd pojawia się dla użytkowników. Istnieją więc dwa możliwe rozwiązania:

  1. Użyj specjalnych trackerów w swojej aplikacji (Firebase i Appmetrica są testowane i są w porządku)
  2. Zwolnij aplikację w Google Play
majran
źródło
0

rozwiązanie polega na utworzeniu nowego klucza podczas generowania podpisanego pliku APK. to działało dla mnie bez zamieszania.

  1. kliknij Build
  2. kliknij wygeneruj podpisany pakiet / APK ...
  3. wybierz Pakiet / APK (w moim przypadku APK) i kliknij Dalej
  4. kliknij utwórz nowy (upewnij się, że masz ścieżkę do magazynu kluczy na komputerze)
  5. po wszystkim kliknij Zakończ, aby wygenerować podpisany plik APK

podczas instalacji ostrzeżenie nie nadejdzie.

KD MBEDOBE
źródło
0

ponieważ wygasł certyfikat debugowania, po prostu usuń plik debug.keystoreznajdujący się w

C:\Users\.android\

po tym skompiluj projekt, narzędzia kompilacji zregenerują nowy klucz i będzie działać poprawnie. tutaj jest odniesienie:

https://developer.android.com/studio/publish/app-signing
Jasbin Karki
źródło
-1

Nie jest to rozwiązanie, ale możesz użyć klucza debugowania do podpisywania wersji wydania, aby uniknąć blokowania instalacji z Google Play Protect. Wygląda na to, że Play Protect nie ostrzega o kompilacjach podpisanych automatyczniedebug.keystore .

Zauważ, że twoje kompilacje debugowania nie są niepodpisane , są po prostu podpisane kluczem debugowania .

Oczywiście nie można użyć kompilacji do dystrybucji produkcyjnej (Google Play, Amazon itp.), Ale nadal warto przeprowadzić wewnętrzne testy przedprodukcyjne, które wymagają pętli sprzężenia zwrotnego o wysokiej częstotliwości.

Możesz dodać zadanie do kompilacji wydania za pomocą debug.keystore, dodając konfigurację build.gradle, na przykład:

android {
  buildTypes {
    // add after the `release` definition
    releaseDebugKey { initWith release }
  }

  signingConfigs {
    // use debug.keystore for releaseDebugKey builds
    releaseDebugKey { initWith debug }
  }
}

następnie wykonaj, ./gradlew assembleReleaseDebugKeyaby zbudować kompilację wydania z kluczem debugowania.

tnj
źródło