ionic-team / ionic-team/native-run

Improve parsing of adb errors

Open
#89 1 comment 0 reactions 0 assignees View on GitHub
android
Dominant language
TypeScript
Stars
137
Forks
28
PR merge metrics
No merged PRs in 30d

Description

## Version:

0.2.9

## Description:

When installing an APK that requires a newer Android SDK version, an `ERR_UNKNOWN` error is displayed, but **adb** specifically displays an `INSTALL_FAILED_OLDER_SDK` error.

I've tried looking for the 'adb' source code in order to find a list of known errors, but I couldn't find anything, so I've created this issue in the hope that someone knows where those errors are listed so that we can improve the output in case of 'adb' errors.

## Command Output:

**native-run without `--verbose`**
```
$ native-run android --app app-debug.apk
No hardware devices found, attempting emulator...
Selected emulator emulator-5554
Installing app-debug.apk...
ERR_UNKNOWN: Non-zero exit code from adb: 1
```

**Default adb command output**
```
$ adb install app-debug.apk
Performing Streamed Install
adb: failed to install app-debug.apk: Failure [INSTALL_FAILED_OLDER_SDK: Failed parse during installPackageLI: /data/app/vmdl2031034771.tmp/base.apk (at Binary XML file line #8): Requires newer sdk version #25 (current version is #24)]
```

**Default adb command exit code**
```
$ echo $?
1
```

**native-run with `--verbose`**
```
$ native-run android --app app-debug.apk --verbose
native-run:android:utils:sdk:resolveSDKRoot Looking for $ANDROID_HOME +0ms
native-run:android:utils:sdk:resolveSDKRoot Looking for $ANDROID_SDK_ROOT +1ms
native-run:android:utils:sdk:resolveSDKRoot Using $ANDROID_SDK_ROOT at /opt/Android/SDK +2ms
native-run:android:utils:sdk:resolveEmulatorHome Looking for $ANDROID_EMULATOR_HOME +0ms
native-run:android:utils:sdk:resolveEmulatorHome Looking at $HOME/.android +0ms
native-run:android:utils:sdk:resolveEmulatorHome Using $HOME/.android/ at /home/user/.android +0ms
native-run:android:utils:sdk:resolveAVDHome Looking for $ANDROID_AVD_HOME +0ms
native-run:android:utils:sdk:resolveAVDHome Looking at $HOME/.android/avd +0ms
native-run:android:utils:sdk:resolveAVDHome Using $HOME/.android/avd/ at /home/user/.android/avd +0ms
native-run:android:utils:sdk:getSDKPackage Parsing /opt/Android/SDK/platform-tools/package.xml +0ms
native-run:android:utils:adb:getDevices Invoking adb: '/opt/Android/SDK/platform-tools/adb' [ 'devices', '-l' ] +0ms
native-run:android:utils:adb:parseAdbDevices Parsing adb devices from output lines: [ 'List of devices attached',
native-run:android:utils:adb:parseAdbDevices 'emulator-5554 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64 transport_id:2',
native-run:android:utils:adb:parseAdbDevices '',
native-run:android:utils:adb:parseAdbDevices '' ] +0ms
native-run:android:utils:adb:getDeviceProperties Invoking adb: '/opt/Android/SDK/platform-tools/adb' [ '-s', 'emulator-5554', 'shell', 'getprop' ] +0ms
native-run:android:utils:adb:getDevices Found adb devices: [ { serial: 'emulator-5554',
native-run:android:utils:adb:getDevices state: 'device',
native-run:android:utils:adb:getDevices type: 'emulator',
native-run:android:utils:adb:getDevices connection: null,
native-run:android:utils:adb:getDevices properties:
native-run:android:utils:adb:getDevices { product: 'sdk_google_phone_x86_64',
native-run:android:utils:adb:getDevices model: 'Android_SDK_built_for_x86_64',
native-run:android:utils:adb:getDevices device: 'generic_x86_64',
native-run:android:utils:adb:getDevices transport_id: '2' },
native-run:android:utils:adb:getDevices manufacturer: 'unknown',
native-run:android:utils:adb:getDevices model: 'Android SDK built for x86_64',
native-run:android:utils:adb:getDevices product: 'sdk_google_phone_x86_64',
native-run:android:utils:adb:getDevices sdkVersion: '24' } ] +34ms
native-run:android:utils:avd:getAVDINIs Discovered AVD ini files: [ '/home/user/.android/avd/A10_-_Pixel_XL.ini',
native-run:android:utils:avd:getAVDINIs '/home/user/.android/avd/A7_-_Pixel_XL.ini' ] +0ms
No hardware devices found, attempting emulator...
native-run:android:utils:run:selectVirtualDevice Found running emulator: emulator-5554 +0ms
Selected emulator emulator-5554
native-run:android:utils:adb:getDeviceProperty Invoking adb: '/opt/Android/SDK/platform-tools/adb' [ '-s', 'emulator-5554', 'shell', 'getprop', 'dev.bootcomplete' ] +0ms
native-run:android:utils:adb:waitForBoot Device emulator-5554 is booted! +0ms
Installing app-debug.apk...
native-run:android:utils:adb:installApk Invoking adb: '/opt/Android/SDK/platform-tools/adb' [ '-s', 'emulator-5554', 'install', '-r', '-t', 'app-debug.apk' ] +0ms
native-run:android:utils:adb:installApk adb install: 'adb: failed to install app-debug.apk: Failure [INSTALL_FAILED_OLDER_SDK: Failed parse during installPackageLI: /data/app/vmdl1076703040.tmp/base.apk (at Binary XML file line #8): Requires newer sdk version #25 (current version is #24)]' +494ms
native-run Caught fatal error: { Error: Non-zero exit code from adb: 1
native-run at ChildProcess.p.on.code (/opt/node-global/lib/node_modules/native-run/dist/android/utils/adb.js:130:24)
native-run at ChildProcess.emit (events.js:198:13)
native-run at maybeClose (internal/child_process.js:982:16)
native-run at Socket.stream.socket.on (internal/child_process.js:389:11)
native-run at Socket.emit (events.js:198:13)
native-run at Pipe._handle.close (net.js:606:12) code: undefined, exitCode: 1, data: undefined } +0ms
ERR_UNKNOWN: Non-zero exit code from adb: 1

```

**SDK Info:**

```
$ native-run android --sdk-info
SDK Location: /opt/Android/SDK
AVD Home: /home/user/.android/avd

API Level: 29
Packages: Android SDK Platform 29 platforms;android-29 3
Google APIs Intel x86 Atom System Image system-images;android-29;google_apis;x86 8
Google Play Intel x86 Atom_64 System Image system-images;android-29;google_apis_playstore;x86_64 8
Sources for Android 29 sources;android-29 1

API Level: 25
Packages: Android SDK Platform 25 platforms;android-25 3
Google APIs Intel x86 Atom System Image system-images;android-25;google_apis;x86 16
Google APIs Intel x86 Atom_64 System Image system-images;android-25;google_apis;x86_64 16
Sources for Android 25 sources;android-25 1

API Level: 24
Packages: Android SDK Platform 24 platforms;android-24 2
Google APIs Intel x86 Atom System Image system-images;android-24;google_apis;x86 25
Google APIs Intel x86 Atom_64 System Image system-images;android-24;google_apis;x86_64 25
Sources for Android 24 sources;android-24 1

Tools:

Android Emulator emulator 29.2.1
Android SDK Build-Tools 29.0.2 build-tools;29.0.2 29.0.2
Android SDK Platform-Tools platform-tools 29.0.5
Android SDK Tools tools 26.1.1
SDK Patch Applier v4 patcher;v4 1
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.