Error getting device API level and crashing ADB


#1

Hi,
my test fails with “Error getting device API level” and crashing ADB. I use real devices (Xiaomi redmi 5 plus, Galaxy a7) with different android versions (7.1, 8.1) and problem occurs on both windows 7 and windows 10.

When i try to execute adb.exe -P 5037 -s 520080e95a9c1549 shell getprop ro.build.version.sdk in CMD as administrator, it returns the value and then crashes ADB (adb stop working). However, it does not crash when I open adb shell first and then execute getprop ro.build.version.sdk.

Appium 1.9.1
ADB version 1.0.40 --4986621
Everything up to date in SDK manager

Message: Test method UnitTestProject1.UnitTest1.TestMethod1 threw exception:
System.InvalidOperationException: An unknown server-side error occurred while processing the command. Original error: Error getting device API level. Original error: Error executing adbExec. Original error: ‘Command ‘H:\SDK\platform-tools\adb.exe -P 5037 -s 520080e95a9c1549 shell getprop ro.build.version.sdk’ exited with code 3221226356’; Stderr: ‘’; Code: ‘3221226356’

[Appium] Welcome to Appium v1.9.1
[Appium] Non-default server args:
[Appium] address: 127.0.0.2
[Appium] Appium REST http interface listener started on 127.0.0.2:4723
[HTTP] --> POST /wd/hub/session
[HTTP] {“desiredCapabilities”:{“automationName”:“Appium”,“platformName”:“Android”,“platformVersion”:“7.1.1”,“deviceName”:“samsung”,“udid”:“07c92c189805”,“appPackage”:“com.android.vending”,“appActivity”:“com.android.vending.AssetBrowserActivity”,“noReset”:“true”,“noSign”:“true”}}
[MJSONWP] Calling AppiumDriver.createSession() with args: [{“automationName”:“Appium”,“platformName”:“Android”,“platformVersion”:“7.1.1”,“deviceName”:“samsung”,“udid”:“07c92c189805”,“appPackage”:“com.android.vending”,“appActivity”:“com.android.vending.AssetBrowserActivity”,“noReset”:“true”,“noSign”:“true”},null,null]
[BaseDriver] Event ‘newSessionRequested’ logged at 1541499471620 (11:17:51 GMT+0100 (Środkowoeuropejski czas stand.))
[Appium] Consider setting ‘automationName’ capability to ‘UiAutomator2’ on Android >= 6, since UIAutomator framework is not maintained anymore by the OS vendor.
[Appium] Creating new AndroidDriver (v4.1.1) session
[Appium] Capabilities:
[Appium] automationName: Appium
[Appium] platformName: Android
[Appium] platformVersion: 7.1.1
[Appium] deviceName: samsung
[Appium] udid: 07c92c189805
[Appium] appPackage: com.android.vending
[Appium] appActivity: com.android.vending.AssetBrowserActivity
[Appium] noReset: true
[Appium] noSign: true
[BaseDriver] Creating session with MJSONWP desired capabilities: {“automationName”:“Appium”,…
[BaseDriver] Capability ‘noReset’ changed from string to boolean. This may cause unexpected behavior
[BaseDriver] Capability ‘noSign’ changed from string to boolean. This may cause unexpected behavior
[BaseDriver] Session created with session id: a6bcb901-dbc8-4b17-b50a-92268d42787d
[AndroidDriver] Java version is: 1.8.0_192
[AndroidDriver] Retrieving device list
[ADB] Trying to find a connected android device
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[AndroidDriver] Using device: 07c92c189805
[ADB] Setting device id to 07c92c189805
[ADB] Running ‘H:\SDK\platform-tools\adb.exe -P 5037 -s 07c92c189805 shell getprop ro.build.version.sdk’
[ADB] Running ‘H:\SDK\platform-tools\adb.exe -P 5037 -s 07c92c189805 shell getprop ro.build.version.sdk’
[AndroidDriver] Shutting down Android driver
[AndroidDriver] Called deleteSession but bootstrap wasn’t active
[ADB] Running ‘H:\SDK\platform-tools\adb.exe -P 5037 -s 07c92c189805 shell am force-stop io.appium.unlock’
[ADB] Running ‘H:\SDK\platform-tools\adb.exe -P 5037 -s 07c92c189805 shell am force-stop io.appium.unlock’
[BaseDriver] Event ‘newSessionStarted’ logged at 1541499480328 (11:18:00 GMT+0100 (Środkowoeuropejski czas stand.))
[MJSONWP] Encountered internal error running command: Error: Error getting device API level. Original error: Error executing adbExec. Original error: ‘Command ‘H:\SDK\platform-tools\adb.exe -P 5037 -s 07c92c189805 shell getprop ro.build.version.sdk’ exited with code 3221226356’; Stderr: ‘’; Code: ‘3221226356’
[MJSONWP] at ADB.callee$0$0$ (C:\Users\dj25581\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\appium-adb\lib\tools\adb-commands.js:75:13)
[MJSONWP] at tryCatch (C:\Users\dj25581\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:67:40)
[MJSONWP] at GeneratorFunctionPrototype.invoke [as _invoke] (C:\Users\dj25581\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:315:22)
[MJSONWP] at GeneratorFunctionPrototype.prototype.(anonymous function) [as throw] (C:\Users\dj25581\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:100:21)
[MJSONWP] at GeneratorFunctionPrototype.invoke (C:\Users\dj25581\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\babel-runtime\regenerator\runtime.js:136:37)
[MJSONWP] at
[HTTP] <-- POST /wd/hub/session 500 8710 ms - 397
[HTTP]

MY CODE
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Android;
using OpenQA.Selenium.Remote;

namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{

    AppiumDriver<IWebElement> driver;

    [TestMethod]
    public void TestMethod1()
    {
        DesiredCapabilities cap = new DesiredCapabilities();
        cap.SetCapability("automationName", "Appium");
        cap.SetCapability("platformName", "Android");
        cap.SetCapability("platformVersion", "7.1.1");
        cap.SetCapability("deviceName", "xiaomi");
        cap.SetCapability("udid", "07c92c189805");
        cap.SetCapability("appPackage", "com.android.vending");
        cap.SetCapability("appActivity", "com.android.vending.AssetBrowserActivity");
        cap.SetCapability("noReset", "true");
        cap.SetCapability("noSign", "true");


        driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.2:4723/wd/hub"), cap);

        Assert.IsTrue(true);

    }
}

}


#2

OK, I kind of solved my problem by using older version of ADB:

Android Debug Bridge version 1.0.36
Revision 0e9850346394-android

It’s not the best solution but at least it works (does not crash anymore).


#3

This is to confirm that the latest version of ADB (at the time of this writing) has some serious bugs.
Downgrade your adb manually to resolve this issue