2016-01-14 14 views
12

Wprowadziłem polecenie poniżej w CMD i polecenie zwróciło błąd poniżej polecenia.Awaria [INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE]

Command:

phonegap run android --verbose --stacktrace 

Błąd:

ERROR: Failed to launch application on device:

ERROR: Failed to install apk to device: pkg: /data/local/tmp/MainActivity-debug.apk

Failure [INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE]

+0

To bardzo użyteczne zapytanie. Szukałem jest . –

Odpowiedz

30

Problem polega na tym, że próbujesz zainstalować wersję pakietu APK, która jest MNIEJSZA niż ta, która jest już na Twoim urządzeniu.

Odinstalowanie z pewnością rozwiąże ten problem.

ADB pozwala na większą elastyczność adb install -r -d <apk path>, ale nie jestem pewien, czy Phonegap ma taką funkcjonalność.

adb install [-lrtsdg] <file> 
    - push this package file to the device and install it 
    (-l: forward lock application) 
    (-r: replace existing application) 
    (-t: allow test packages) 
    (-s: install application on sdcard) 
    (-d: allow version code downgrade) 
    (-g: grant all runtime permissions) 

Aktualizacja:

Okazuje się, że nie był poprawny komunikat o błędzie do obniżenia wersji aplikacji. W rzeczywistości jest to coś zupełnie odrębnego. I found this link który dokładnie wyjaśnia sytuację:

tl;dr You can't fool the new Android 6 permissions model by first publishing an APK with targetSdk 23 which will grant all permissions runtime and then publishing a new version with targetSdk 22 or less. You'll get an INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE error.

I was working on an app with targetSdk 23 (Android 6 Marshmallow) when it hit me that it possibly could be a security issue with the new Android permission model. Android 6 devices approves all permission on install time and then the user has to approve them whenever the app asks for the permission. What if the user installed the app - auto granting all permissions - and then it didn't ask for using them, and then afterwards the app was updated with the same permissions, but with a lower targetSdk?

I spent a couple minutes creating an app that targeted SDK level 23 and added a fine location permission (ACCESS_FINE_LOCATION). Then I installed and ran the app. The app didn't ask for permission to access the location manager. Then I set the SDK level to 22 and tried to install the app. Luckily it wasn't able to install. I got an error saying Failure [INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE].

+0

Skąd się bierze ** - r **? Nie mogę go znaleźć w [dokumentacji systemu Android debugowania mostu developer.android.com] (http://developer.android.com/tools/help/adb.html). Czy możesz również powiedzieć, co masz na myśli mówiąc o "wersji". To trochę mgliste. – SPottuit

+0

Zaktualizowałem moje pytanie, aby odreagować znaczenie opcji. Według wersji mam na myśli twoją wersję aplikacji. Jeśli masz zainstalowaną wersję aplikacji 3 i próbujesz zainstalować wersję aplikacji 2. Nie zezwoli na to bez flagi degradacji hte. – Knossos

+0

Przetestowałem twoją teorię. Zmieniłem wersję aplikacji z 2 na 1 i dostałem inny błąd: "[INSTALL_FAILED_VERSION_DOWNGRADE]", więc jestem zdezorientowany. Czy ten błąd oznacza to samo co poprzednio: '[INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE]'? Ciekawi mnie różnica między tymi błędami. – SPottuit

7

Rozwiązanie:

udało mi się pozbyć tego błędu przez odinstalowanie moją aplikację z urządzenia.

Przyczyna:

Co prawdopodobnie przyczyną błędu jest to, że aktualizowany mój Android SDK z SDK Manager.

0

mam ten błąd w VS2015 przy użyciu taco i debugowania dla Androida przy użyciu określonego profilu emulatora. Emulator VS 10.1" Zefir (6.0.0) XHDPI Tablet Projekt byłem praca została zainstalowana jako aplikacja na tym konkretnym profilu, ponieważ używałam go do debugowania Rozwiązałem problem przez odinstalowanie i ponowne zainstalowanie tego konkretnego profilu: Narzędzia -> Visual Studio Emulator dla Androida -> Odinstaluj profil. zawierał moją aplikację i błąd zniknął, to jest odpowiednik odinstalowania aplikacji VS Emulator z odległego urządzenia,