失败[INSTALL_FAILED_ALREADY_EXISTS:尝试在未先卸载的情况下重新安装io.appium.settings。]

时间:2017-08-25 11:43:17

标签: java android appium

我正在尝试运行一个简单的脚本,它会启动一个应用程序。当我使用Android 6.0但在android 7.0上失败时这很好用

这是脚本 -

                DesiredCapabilities capabilities= new DesiredCapabilities();

                capabilities.setCapability("deviceName","Moto G4 Plus");
                capabilities.setCapability("platformName","Android");
                capabilities.setCapability("platformVersion","7.0.");


                capabilities.setCapability("appPackage","com.bigbasket.mobileapp");
                capabilities.setCapability("appActivity","com.bigbasket.mobileapp.activity.HomeActivity");

                AndroidDriver driver= new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

                Thread.sleep(4000);

这是错误日志 -

  

错误:无法启动Appium会话,错误是:错误:命令失败:C:\ WINDOWS \ system32 \ cmd.exe / s / c“C:\ Users \ gadiisha \ AppData \ Local \ Android \ android- sdk \ platform-tools \ adb.exe -s ZY2237WRTC安装“D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk”“   无法安装D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk:失败[INSTALL_FAILED_ALREADY_EXISTS:尝试重新安装io.appium.settings而不先卸载。]

     

info:[debug]错误:命令失败:C:\ WINDOWS \ system32 \ cmd.exe / s / c“C:\ Users \ gadiisha \ AppData \ Local \ Android \ android-sdk \ platform-tools \ adb .exe -s ZY2237WRTC安装“D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk”“   无法安装D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk:失败[INSTALL_FAILED_ALREADY_EXISTS:尝试重新安装io.appium.settings而不先卸载。]

at ChildProcess.exithandler (child_process.js:751:12)
at ChildProcess.emit (events.js:110:17)
at maybeClose (child_process.js:1016:16)
at Process.ChildProcess._handle.onexit (child_process.js:1088:5)
     

info:[debug]响应客户端错误:{“status”:33,“value”:{“message”:“无法创建新会话。(原始错误:命令失败:C:\ WINDOWS \ system32 \ cmd.exe / s / c \“C:\ Users \ gadiisha \ AppData \ Local \ Android \ android-sdk \ platform-tools \ adb.exe -s ZY2237WRTC install \”D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk \“\”\ n无法安装D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk:失败[INSTALL_FAILED_ALREADY_EXISTS:尝试重新安装io.appium。没有先卸载的设置。] \ r \ n)“,”kill“:false,”code“:1,”signal“:null,”cmd“:”C:\ WINDOWS \ system32 \ cmd.exe / s / c \“C:\ Users \ gadiisha \ AppData \ Local \ Android \ android-sdk \ platform-tools \ adb.exe -s ZY2237WRTC install \”D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk \“\”“,”origValue“:”命令失败:C:\ WINDOWS \ system32 \ cmd.exe / s / c \“C:\ Users \ gadiisha \ AppData \ Local \ Android \ android-sdk \ platform-tools \ adb.exe -s ZY2237WRTC安装\“D:\ Appiu m \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk \“\”\ n无法安装D:\ Appium \ node_modules \ appium \ build \ settings_apk \ settings_apk-debug.apk:失败[INSTALL_FAILED_ALREADY_EXISTS:尝试重新启动安装io.appium.settings而不先卸载。] \ r \ n“},”sessionId“:null}   info:< - POST / wd / hub / session 500 10506.783 ms - 1306

详情 - 1. Appium for windows 2. appium v​​ersion 1.4.16.1 3. eclipse(luna)

到目前为止我尝试过的解决方案 -

  1. 升级到最新版本的Appium - 1.6.5(它没有用,所以我降级为Appium 1.4.16.1

  2. 从移动设备上删除了appium设置和解锁文件夹。

  3. 删除了应用程序,然后重新启动appium服务器并在此之后再次运行脚本

  4. 我在门户网站上看到过类似的问题,但是如果没有适当的解决方案,他们所有人都会进行冗长的讨论。请帮我解决这个问题。 感谢

3 个答案:

答案 0 :(得分:2)

这是Android OS 7.0版设备的已知问题

  1. Appium在初始化驱动程序时在设备上安装了两个应用程序(设置和解锁程序)(对于非7.0 os版本的设备,它没有任何问题)。

  2. 当您尝试在同一设备上再次初始化appium驱动程序时,appium无法安装这两个应用程序并且无法初始化驱动程序。

  3. 解决方案:对于Android OS 7.0,在启动appium服务器之前,您需要从设备上卸载解锁器应用和设置应用。您可能在具有不同操作系统版本的设备上运行脚本,因此最好为卸载解锁器和设置应用程序设置条件。

    以下是步骤,但您可以根据自己的要求进行修改。

    1.首先通过adb命令获取设备的操作系统版本并将其存储在字符串中。

    1. 让我们考虑您已将上述命令的输出存储在字符串变量中,然后您可以比较下面的值并执行adb命令以卸载这两个应用程序,并且您的appium驱动程序应该初始化而不会出现任何问题。
    2. 以下是上述两个步骤的组合代码段:

          String cmd = "adb shell getprop ro.build.version.release";
      
      String osVersion=executeCommand(cmd);
      
          if(osVersion.contains("7"))
          {
              //uninstall io.appium.settings
              cmd="adb uninstall  io.appium.settings";
              executeCommand(cmd);
      
              //uninstall io.appium.unlock
              cmd="adb uninstall  io.appium.unlock";
              executeCommand(cmd);
      
          }
      
      public String executeCommand(String cmd)
      {
          String commandresponse="";
          try
          {
              Runtime run = Runtime.getRuntime();
              Process proc=run.exec(cmd);
              BufferedReader stdInput = new BufferedReader(new 
                      InputStreamReader(proc.getInputStream()));
      
              BufferedReader stdError = new BufferedReader(new 
                      InputStreamReader(proc.getErrorStream()));
      
              String response=null;
              while ((response = stdInput.readLine()) != null) 
              {
                  if(response.length()>0)
                  {
                      commandresponse=commandresponse+response;
                  }
              }
      
              while ((response = stdError.readLine()) != null) 
              {
                  commandresponse=commandresponse+response;
      
              }
          }
          catch(Exception e)
          {
              e.printStackTrace();
          }
          //System.out.println(commandresponse);
          return commandresponse;
      }
      

      注意:以上代码段的编写考虑到只有一台设备连接到本机,因此所有adb命令仅转到该设备。如果您已将多个设备连接到本机,则可以断开未使用的设备或在代码中的上述adb命令中添加deviceSerialNumber参数。

      希望这会有所帮助:)

答案 1 :(得分:0)

在运行脚本之前运行adb -s device_serial uninstall io.appium.settingsadb -s device_serial uninstall io.appium.unlock

答案 2 :(得分:0)

在解决问题后尝试卸载应用程序,然后再运行自动化并在终端中执行以下命令

adb uninstall io.appium.settings
adb uninstall io.appium.unlock