代码之家  ›  专栏  ›  技术社区  ›  Austin Efnor

失败[安装失败,版本降级]

  •  0
  • Austin Efnor  · 技术社区  · 7 年前

    我最近接管了一个项目,该项目使用Appium进行一些自动移动测试。我有一些python脚本应该与Appium一起运行,但是在尝试运行它们时,我遇到了一些 . 在对这个问题进行了大量研究后,我发现这是一个与安卓及其APK版本相关的问题。然而,我对安卓还是个新手,所以要完全理解Appium和安卓在做什么很有挑战性。当它试图将应用程序安装到设备上时,我更倾向于解决一个问题,但是我觉得我已经解决了解决这个问题的步骤。例如,确保我拥有最新版本的应用程序,卸载应用程序,重新安装旧版本的应用程序,最后检查更新。

    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\u FAILED\u VERSION\u降级]但现在我得到了

    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的权限问题。

    4 回复  |  直到 7 年前
        1
  •  11
  •   jetmc    6 年前

    adb install -r -d ${PATH_TO_APK} .

        2
  •  6
  •   Mate Ajdukovic    7 年前

    可能应用程序未正确卸载,请尝试运行命令:

    adb shell pm uninstall com.xxx.xxx 
    

    将“com.xxx.xxx”替换为您的软件包名称。

        3
  •  2
  •   dmle    7 年前

    您面临的第一个问题([INSTALL\u FAILED\u VERSION\u Degrade])已在最近的Appium server版本中修复 1.7.1 ,因此,如果您使用的是最新的服务器,则无需搜索解决方法。

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

        4
  •  2
  •   Brad    5 年前

    以防万一,这对任何人都有帮助,我最近犯了这个错误 Failure [INSTALL_FAILED_VERSION_DOWNGRADE] 因为我已经在我的安卓手机上安装了这个应用程序,然后我把branch换成了一个早期的版本号,并试图安装它。