Start android emulator from Appium script

Hello.

I’m trying to figure out how to start android emulator from my appium test script.
I can currently run my appium script if I have already compiled the app with android studio and started the emulator, and if I haven’t my appium script is giving me these messages

[AndroidDriver] Retrieving device list
[debug] [ADB] Trying to find a connected android device
[debug] [ADB] Getting connected devices…
[debug] [ADB] 0 device(s) connected
[debug] [ADB] Could not find devices, restarting adb server…
[debug] [ADB] Restarting adb
[debug] [ADB] Getting connected devices…
[debug] [ADB] 0 device(s) connected
[debug] [AndroidDriver] Shutting down Android driver
[debug] [AndroidDriver] Called deleteSession but bootstrap wasn’t active
[MJSONWP] Encountered internal error running command: Error: Could not find a connected Android device.
at ADB.getDevices$ (…/…/…/lib/tools/system-calls.js:132:13)
at tryCatch (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
at invoke (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
at enqueueResult (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:185:17)
at F (/usr/local/lib/node_modules/appium/node_modules/core-js/library/modules/$.export.js:30:36)
at AsyncIterator.enqueue (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:184:12)
at AsyncIterator.prototype.(anonymous function) [as next] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
at Object.runtime.async (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:209:12)
at getDevices (…/…/…/lib/tools/system-calls.js:135:18)
at ADB.getDevices$ (…/…/…/lib/tools/system-calls.js:149:20)
at tryCatch (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
at GeneratorFunctionPrototype.invoke (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
[HTTP] ← POST /wd/hub/session 500 21532 ms - 179

This is my code to start the android emulator currently

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
    capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "7.1.1");
    capabilities.setCapability(MobileCapabilityType.APP, "/Users/richardhansson/Developer/hidden-android/app/build/outputs/apk/app-jenkins-debug.apk");
    capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "emulator-5554");
    capabilities.setCapability(AndroidMobileCapabilityType.UNICODE_KEYBOARD, "true");
    capabilities.setCapability("appPackage", "se.jobb.hidden");
    capabilities.setCapability("appActivity", "se.jobb.hidden.activities.StartActivity");
    capabilities.setCapability("appWaitActivity", "se.jobb.hidden.activities.LoginActivity");

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

What capability am I missing to make my Appium script compile the app to my emulator, so I don’t have to do it manually before I run my test suite.
Appreciate all help. Regards

I was missing this

    capabilities.setCapability("avd","Pixel_XL_API_25");

Just replace “Pixel_XL_API_25” with one of your installed adb devices
Hope this helps someone.