This is a collection of GitHub Actions for Android development
This is only tested with macOS-10.15 environment. It might work on linux but there is no support for kvm there so don't expect to have api 26+ available there.
This repo provides an action for installing the Android SDK on the build agent. It will override whatever setup is
already there. You might want to do this since default GitHub Actions environments are now missing
so they're immutable.
steps: - uses: actions/[email protected] # Download & install the Android SDK. - uses: malinskiy/action-android/[email protected]/0.1.3 # Set up platform tools like adb. - run: sdkmanager platform-tools # Start ADB (and verify that pathing is working correctly). - run: adb devices # Verify $ANDROID_HOME is properly set for later Gradle commands. - run: echo $ANDROID_HOME
There is an official action for Java setup. For execution using Gradle
I suggest to use
./gradlew to minimize the dependency on environment setup.
action-android/emulator-run-cmd provide an action which installs the emulator packages, starts the emulator and waits
until it's booted. After this it will execute the provided cmd and stop the running emulator.
It's imperative(!) to use
runs-on: macOS-10.15 if you want to have hardware acceleration for your emulator.
steps: - uses: actions/[email protected] - uses: malinskiy/action-android/[email protected]/0.1.3 with: cmd: ./gradlew integrationTest api: 25 tag: default abi: x86
cmdis the shell command to execute while the emulator is booted
apiis the API version of emulator
tagis either the default or google_apis. Use google_apis for emulator with google store
abiis the abi of the emulator. x86 is the fastest one
hardwareProfileis the hardware profile of the emulator. Check the
avdmanager listfor supported value. I advise to use string names instead of ids since those might change between sdk updates
cmdOptionsis value which you can use to pass additional arguments to the emulator start command. By default this is
-no-snapshot-save -noaudio -no-boot-anim
disableAnimationsto disable animations using the system preferences.
falseby default. Keep in mind that applications might not respect system settings and these might have no effect at all
bootTimeoutis the emulator boot timeout (default is 600 seconds = 10 minutes)
verboseif you want to enable additional logging for this action
emulator-run-cmd action will generate an
artifacts/logcat.log artifact that you can use in your builds to investigate issues. For example the next snippet will save the artifact in case the previous steps had failures (your tests failed and you need these logs for investigation).
- name: Save logcat output uses: actions/[email protected] if: failure() with: name: logcat path: artifacts/logcat.log
Currently GitHub Actions do not support OS processes that outlive the specific step hence you can't really do a
workflow that starts the emulator and then execute your testing command in a separate step. This is the reason why
I've written the combined
emulator-run-cmd action. If you have multiple commands to run in parallel to emulator I suggest to write a script and execute it via the cmd arg.
MIT License Copyright (c) 2020 Anton Malinskiy Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
By using this action you're automatically accepting the relevant licenses of Android SDK. See the Android SDK for more details.