失败 [INSTALL_FAILED_VERSION_DOWNGRADE]

Failure [INSTALL_FAILED_VERSION_DOWNGRADE]

我最近接手了一个使用 Appium 做一些自动化移动测试的项目。我有一些 python 脚本应该是 运行 和 Appium 但是当我试图 运行 它们时我 运行 进入 "[INSTALL_FAILED_VERSION_DOWNGRADE]"。经过对此事的大量研究后,我发现这是与 Android 相关的问题,并且是 APK 版本。但是,我是 Android 的新手,因此很难完全理解 Appium 和 Android 正在做什么。当它试图将应用程序安装到设备时,我更倾向于解决问题,但我觉得我已经解决了故障排除的步骤。一些例子是确保我有最新版本的应用程序,卸载应用程序,重新安装旧版本的应用程序,最后检查更新。

Python 脚本回溯:

Traceback (most recent call last):
  File "main.py", line 310, in <module>
    launch()
  File "main.py", line 26, in launch
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
  File "C:\Python\lib\site-packages\appium\webdriver\webdriver.py", line 36, in __init__
    super(WebDriver, self).__init__(command_executor, desired_capabilities, browser_profile, proxy, keep_alive)
  File "C:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 151, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "C:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 240, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "C:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 308, in execute
    self.error_handler.check_response(response)
  File "C:\Python\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: A new session could not be created. (Original error: Command failed: C:\AndroidSDK\platform-tools\adb.exe -s GCNPCX031761JAV install "C:\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk"
Failed to install C:\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk: Failure [INSTALL_FAILED_VERSION_DOWNGRADE]
)

Appium 控制台:

error: Failed to start an Appium session, err was: Error: Command failed: C:\AndroidSDK\platform-tools\adb.exe -s GCNPCX031761JAV install "C:\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk"
Failed to install C:\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk: Failure [INSTALL_FAILED_VERSION_DOWNGRADE]

info: [debug] Error: Command failed: C:\AndroidSDK\platform-tools\adb.exe -s GCNPCX031761JAV install "C:\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk"
Failed to install C:\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk: Failure [INSTALL_FAILED_VERSION_DOWNGRADE]

    at ChildProcess.exithandler (child_process.js:204:12)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:891:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
info: [debug] Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: Command failed: C:\AndroidSDK\platform-tools\adb.exe -s GCNPCX031761JAV install \"C:\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk\"\nFailed to install C:\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk: Failure [INSTALL_FAILED_VERSION_DOWNGRADE]\r\n)","killed":false,"code":1,"signal":null,"cmd":"C:\AndroidSDK\platform-tools\adb.exe -s GCNPCX031761JAV install \"C:\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk\"","origValue":"Command failed: C:\AndroidSDK\platform-tools\adb.exe -s GCNPCX031761JAV install \"C:\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk\"\nFailed to install 
C:\Appium\node_modules\appium\build\settings_apk\settings_apk-debug.apk: Failure [INSTALL_FAILED_VERSION_DOWNGRADE]\r\n"},"sessionId":null}

更新: 我重新启动了计算机并再次 运行 它摆脱了 [INSTALL_FAILED_VERSION_DOWNGRADE] 但现在我得到

Traceback (most recent call last):
  File "main.py", line 310, in <module>
    launch()
  File "main.py", line 26, in launch
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
  File "C:\Python\lib\site-packages\appium\webdriver\webdriver.py", line 36, in __init__
    super(WebDriver, self).__init__(command_executor, desired_capabilities, browser_profile, proxy, keep_alive)
  File "C:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 151, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "C:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 240, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "C:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 308, in execute
    self.error_handler.check_response(response)
  File "C:\Python\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Error occured while starting App. Original error: Error executing adbExec. Original error: 'Command 'C\:\AndroidSDK\platform-tools\adb.exe -P 5037 -s GCNPCX031761JAV shell am start -W -n com.rockfordfosgate.perfecttune/com.rockfordfosgate.perfecttune.activity.HomeActivity -S' exited with code 1'; Stderr: 'java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.rockfordfosgate.perfecttune/.activity.HomeActivity } from null (pid=10837, uid=2000) not exported from uid 10127
        at android.os.Parcel.readException(Parcel.java:1683)
        at android.os.Parcel.readException(Parcel.java:1636)
        at android.app.ActivityManagerProxy.startActivityAndWait(ActivityManagerNative.java:3352)
        at com.android.commands.am.Am.runStart(Am.java:630)
        at com.android.commands.am.Am.onRun(Am.java:388)
        at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)
        at com.android.commands.am.Am.main(Am.java:121)
        at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
        at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:294)'; Code: '1'

这似乎是 ADB 的权限问题。

您遇到的第一个问题 ([INSTALL_FAILED_VERSION_DOWNGRADE]) 已在最近的 Appium 服务器版本 1.7.1 中修复,因此如果您使用的是最新服务器,则无需搜索解决方法。

无法启动 Intent 的第二个问题更像是您的 Android 应用程序 manifext.xml 文件的问题,您检查如何修复它 here

可能应用没有正确卸载,尝试运行命令:

adb shell pm uninstall com.xxx.xxx 

将 "com.xxx.xxx" 替换为您的包裹名称。

尝试adb install -r -d ${PATH_TO_APK}

万一这对任何人都有帮助,我最近遇到了这个错误 Failure [INSTALL_FAILED_VERSION_DOWNGRADE] 这是因为我已经在我的 android phone 上安装了该应用程序然后我将分支切换到早期版本编号并尝试安装它。

简单的解决方案,只需卸载应用程序并重新安装即可。