Description of the feature request
Android Libraries do not produce APKs. But the Android Build for UI Testing step requires an APK to work, otherwise the build fails. In order for the build to pass, the current workaround is to send an empty APK manually, which is not the most elegant solution.
The request to solve this by either:
- Allow the step to work without APKs
- Send a dummy APK in case no APKs are found
Use case / for what or how I would use it
Creating Android Library Module Builds
I’m also seeing
virtual-device-testing-for-android |
| version: 1.1.5
Failed to parse config:
- AppPath: required variable is not present
- What does the current workaround look like for this?
- How do you generate this dummy-apk?
My previous steps looks like this:
- gradle-runner@2:
title: Assemble test-apk
inputs:
- gradle_task: 'assembleDebug :moduleName:assembleFlavor1MockDebugAndroidTest '
Which only sets $BITRISE_TEST_APK_PATH
@Roland-Bak
The reason I need this is that the Ubuntu-16.04 stack is discontinued and my current workaround does not work on the Ubuntu-20.04 stack anymore:
echo "Creating emulator ... "
cd $ANDROID_HOME/emulator
echo no | avdmanager create avd -n Pixel_2_API_26 -k "system-images;android-26;google_apis;x86" --force
echo "Starting emulator ..."
emulator -avd Pixel_2_API_26 -no-window -no-audio -debug-init > /dev/null 2>&1 &
echo "Waiting for emulator to be ready ..."
adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done; input keyevent 82'
Hello @armin-schnabel 
Can you please send us the log file or the URL of the related build and also enable Support Access on the Settings
tab of the app ( Enabling the Bitrise Support user for your app | Bitrise DevCenter ) so that we can take a more in-depth look?
I’ll forward it to the experts to see what we can do to make your workflow work! 
Hi @Roland-Bak
I enabled support access. There are two build URLs:
This one shows my last failed attempt to create this “current workaround is to send an empty APK manually” you are mentioning above.
And this one shows the workaround which we were using before Ubuntu 16.04 was removed and shows that that workaround is not working with Ubuntu 20.04 anymore.
Cheers!
If someone else ends up here and is wondering what this mysterious “workaround” is:
- As mentioned here you just use ANY random
apk
there.
- A small sample apk would be e.g. this.
To safe you some time, here the workflow:
- gradle-runner@2:
title: Assemble module instrumentation test apk
inputs:
- gradle_options: "--no-daemon --stacktrace"
- gradle_task: ":moduleName:assembleDebugAndroidTest "
- script@1:
inputs:
- content: |-
#!/usr/bin/env bash
set -e
set -x
wget https://some_place_you_uploaded_the_apk_to.apk -O $BITRISE_DEPLOY_DIR/dummy.apk
envman add --key BITRISE_APK_PATH --value "$BITRISE_DEPLOY_DIR/dummy.apk"
title: 'workaround: dummy APK'
- virtual-device-testing-for-android@1:
inputs:
- test_type: instrumentation
- test_devices: Pixel2,29,en,portrait
Hey,
This is now fixed. See [CI-447] Add fallback apk by tothszabi · Pull Request #85 · bitrise-steplib/steps-virtual-device-testing-for-android · GitHub
What we did was to add an apk of an empty Android application. The apk only is 768Kb large. We also changed that the app_path
input is not required anymore. What will happen is that the step checks if the user specified anything in the app_path
field and if not then it will automatically use the embedded skeleton Android app apk.
1 Like