失败[INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE]

Sjo*_*uit 13 android command cordova cordova-cli

我在CMD中输入了下面的命令,命令返回命令下面的错误.

命令:

phonegap run android --verbose --stacktrace
Run Code Online (Sandbox Code Playgroud)

错误:

错误:无法在设备上启动应用程序:

错误:无法安装apk到设备:pkg:/data/local/tmp/MainActivity-debug.apk

失败[INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE]

Kno*_*sos 32

问题在于,您尝试安装的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)
Run Code Online (Sandbox Code Playgroud)

更新:

事实证明,这不是降级App版本的正确错误消息.事实上,它是完全独立的东西.我发现这个链接准确地解释了这种情况:

tl; dr你不能通过首先发布带有targetSdk 23的APK来欺骗新的Android 6权限模型,它将授予所有权限运行时,然后发布targetSdk 22或​​更低版本的新版本.您将收到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].


Sjo*_*uit 9

解:

我设法通过从我的设备卸载我的应用程序来摆脱错误.

原因:

可能导致错误的是我使用SDK Manager更新了我的Android SDK .