"Invalid --abi armeabi-v7a for the selected target" with Google APIs

A little late to the party but this still remains an issue and the only way I have found around it is by using android-22 on the emulator.

This is my .travis.yml for reference.

language: android
notifications:
  email: false
before_install:
  - sudo apt-get -qq update
  - sudo apt-get install -y pax
env:
  global:
  - ANDROID_API_LEVEL=26
  - ANDROID_BUILD_TOOLS_VERSION=26.0.1
  - ANDROID_EMU_API_LEVEL=22
  - ANDROID_ABI=armeabi-v7a
  - ADB_INSTALL_TIMEOUT=20 # minutes (2 minutes by default)
  - QEMU_AUDIO_DRV=none # Remove audio
cache:
  directories:
    - $HOME/.gradle/caches/
    - $HOME/.gradle/wrapper/
    - $HOME/.android/build-cache
android:
  components:
  - tools
  - platform-tools
  - tools
  - build-tools-$ANDROID_BUILD_TOOLS_VERSION
  - android-$ANDROID_API_LEVEL
  - android-$ANDROID_EMU_API_LEVEL
  - extra-android-support
  - sys-img-$ANDROID_ABI-google_apis-$ANDROID_EMU_API_LEVEL
before_script:
  - echo -e "Host github.com\n\tHostName github.com\n\tUser git\n\tIdentityFile ~/.ssh/id_travisci\n" >> ~/.ssh/config
  - echo no | android create avd --force -n test -t android-$ANDROID_EMU_API_LEVEL --abi google_apis/$ANDROID_ABI
  - emulator -avd test -no-window &
  - android-wait-for-emulator
  - adb shell input keyevent 82 &
script:
  - ./gradlew clean installDebug
  - ./gradlew check
  - ./gradlew testDebugUnitTest
  - ./gradlew connectedDebugAndroidTest

Apparently the names of the Google APIs system images and ABI parameters changed:

  • ABI = armeabi-v7a to google_apis/armeabi-v7a
  • System image = sys-img-armeabi-v7a-android-21 to sys-img-armeabi-v7a-addon-google_apis-google-21

I fixed this by updating both my ANDROID_ABI variable and component name for the system image - new values are:

- ANDROID_ABI=google_apis/armeabi-v7a
...
# Specify at least one system image,
- sys-img-armeabi-v7a-addon-google_apis-google-$ANDROID_API_LEVEL

Here's the whole section in context:

env:
  global:
    - ANDROID_API_LEVEL=21
    - ANDROID_BUILD_TOOLS_VERSION=21.1.2
    - ANDROID_ABI=google_apis/armeabi-v7a

android:
  components:
    - platform-tools
    - tools
    - build-tools-$ANDROID_BUILD_TOOLS_VERSION
    - android-$ANDROID_API_LEVEL
    # For Google Maps API v1
    - addon-google_apis-google-$ANDROID_API_LEVEL
    # Google Play Services
    - extra-google-google_play_services
    # Support library
    - extra-android-support
    # Latest artifacts in local repository
    - extra-google-m2repository
    - extra-android-m2repository
    # Specify at least one system image
    - sys-img-armeabi-v7a-addon-google_apis-google-$ANDROID_API_LEVEL

After these changes, it builds successfully.

EDIT Sept 12th, 2016

Apparently there was another change in mid-2016 that causes this same problem. For example, here's a failed build with the same error message.

The following changes were needed to fix Travis builds:

  • Add separate ANDOID_TAG ABI tag variable
  • Duplicate tools to get the new repository-11.xml and to install Android SDK tools 25.1.x
  • Change system image names to match new Android SDK
  • Change emulator start command to use new ABI tag variable to specify Google APIs

For example:

- ANDROID_ABI=google_apis/armeabi-v7a

...changed to:

- ANDROID_ABI=armeabi-v7a

- ANDROID_TAG=google_apis

- tools needs to be listed twice.

The system images:

- sys-img-armeabi-v7a-addon-google_apis-google-23

- sys-img-armeabi-v7a-addon-google_apis-google-23

...needed to be changed to:

- sys-img-armeabi-v7a-google_apis-23

- sys-img-armeabi-v7a-google_apis-23

The line to start the emulator changed from:

- echo no | android create avd --force -n test -t "Google Inc.:Google APIs:23" --abi $ANDROID_ABI

...to:

- echo no | android create avd --force -n test -t "android-23" --abi $ANDROID_ABI --tag $ANDROID_TAG

See this commit for a changeset of what needs to be changed, this file for a fully working script, and see https://github.com/travis-ci/travis-ci/issues/6122#issuecomment-239073557 for details.

Thanks to @Ardock for the fixes!

EDIT Nov 28th, 2016

I seems that API Level 23 emulator is currently not working on Travis with the above - android create avd --force -n test -t "android-23" --abi "armeabi-v7a" --tag "google_apis" yields the error Error: Invalid --tag google_apis for the selected target. For more details see https://github.com/OneBusAway/onebusaway-android/issues/720.

Also, apparently ARM ABIs aren't currently available for API Level 24 or 25 (Android 7.1.1) - see this issue for a screenshot of SDK Manager.

Posted issue to Android Studio Google+ Community here: https://plus.google.com/+SeanBarbeau/posts/adNGGtJFhvi?sfc=true