以下のコマンドをCMDに入力すると、コマンドの下にエラーが返されました。
コマンド:
phonegap run Android --verbose --stacktrace
エラー:
エラー:デバイスでアプリケーションを起動できませんでした:
エラー:apkをデバイスにインストールできませんでした:pkg:/data/local/tmp/MainActivity-debug.apk
失敗[INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE]
ここでの問題は、APKの既存のバージョンよりも少ないバージョンのAPKをインストールしようとしていることです。
アンインストールすると、その問題は確実に解決されます。
ADBはより高い柔軟性adb install -r -d <apk path>
を許可しますが、Phonegapにその機能があるかどうかはわかりません。
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)
更新:
これは、アプリのバージョンをダウングレードするための正しいエラーメッセージではないことがわかりました。実際、それは完全に別のものです。私 このリンクを見つけました 状況を正確に説明します:
tl; dr最初にtargetSdk 23でAPKを公開してすべての権限をランタイムに付与し、次にtargetSdk 22以下で新しいバージョンを公開することで、新しいAndroid 6権限モデルをだますことはできません。 INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADEエラーが発生します。
TargetSdk 23(Android 6 Marshmallow)を使用するアプリで作業していたときに、新しいAndroidアクセス許可モデルのセキュリティの問題である可能性があると思いました。 Android 6台のデバイスがインストール時にすべての権限を承認し、アプリが権限を要求するたびにユーザーが承認する必要があります。ユーザーがアプリをインストールし、すべての権限を自動的に付与し、その後、それらを使用するように要求せず、その後、同じ権限で、ただしtargetSdkを低くしてアプリを更新した場合はどうなりますか?
私は数分かけてSDKレベル23をターゲットとするアプリを作成し、細かい位置情報のアクセス許可(ACCESS_FINE_LOCATION)を追加しました。次に、アプリをインストールして実行しました。アプリは、ロケーションマネージャーへのアクセス許可を要求しませんでした。次に、SDKレベルを22に設定し、アプリをインストールしようとしました。幸い、インストールできませんでした。エラー[INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE]というエラーが表示されました。
ソリューション:
デバイスからアプリをアンインストールすることで、なんとかエラーを取り除くことができました。
原因:
エラーの原因はおそらく、Android SDK with SDK Manager を更新したことです。
TACOを使用してVS2015でこのエラーが発生し、Androidのデバッグ:VS Emulator 10.1」Marshmallow(6.0.0)XHDPI Tabletを使用しています。私が取り組んでいたプロジェクトは、デバッグに使用していたため、その特定のプロファイルのアプリ。その特定のプロファイルをアンインストールして再インストールすることで問題を解決しました:ツール-> Visual Studio Emulator for Android-> Uninstallプロファイル。プロファイルに私のアプリが含まれなくなったため、エラーは発生しなくなりました。これは、VS Emulatorでリモートデバイスからアプリをアンインストールするのと同じです。