"Invalid --abi armeabi-v7a for the selected target" 具有 Google API
"Invalid --abi armeabi-v7a for the selected target" with Google APIs
我正在尝试将 Android 项目从使用 API Level 19 SDK 和构建工具更新到最新的 API Level 21,包括 Google API秒。在此更新之前,Travis 上的一切 运行 都很好(例如,参见 this build)。
当我 运行 使用新的 API 级别时,我看到以下错误:
0.42s$ echo no | android create avd --force -n test -t "Google Inc.:Google APIs:"$ANDROID_API_LEVEL --abi $ANDROID_ABI
Valid ABIs: no ABIs.
Error: Invalid --abi armeabi-v7a for the selected target.
The command "echo no | android create avd --force -n test -t "Google Inc.:Google APIs:"$ANDROID_API_LEVEL --abi $ANDROID_ABI" failed and exited with 1
有关完整的 Travis 输出,请参阅 this build。
这是我的。travis.yml:
language: android
jdk: oraclejdk7
# Turn off caching to avoid any caching problems
cache: false
# Use the Travis Container-Based Infrastructure (see #203)
sudo: false
env:
global:
- ANDROID_API_LEVEL=21
- ANDROID_BUILD_TOOLS_VERSION=21.1.2
- ANDROID_ABI=armeabi-v7a
android:
components:
- platform-tools
- tools
- build-tools-$ANDROID_BUILD_TOOLS_VERSION
- android-$ANDROID_BUILD_TOOLS_VERSION
# 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-android-$ANDROID_BUILD_TOOLS_VERSION
before_script:
# Create and start emulator
- echo no | android create avd --force -n test -t "Google Inc.:Google APIs:"$ANDROID_API_LEVEL --abi $ANDROID_ABI
- emulator -avd test -no-skin -no-audio -no-window &
script:
- ./wait_for_emulator
- ./gradlew connectedCheck -PdisablePreDex
我的 build.gradle 是 here。
同样,我在新 Travis 构建中唯一改变的是 API 级别和构建工具级别。
显然 Google APIs 系统映像和 ABI 参数的名称已更改:
- ABI =
armeabi-v7a
至 google_apis/armeabi-v7a
- 系统映像 =
sys-img-armeabi-v7a-android-21
到 sys-img-armeabi-v7a-addon-google_apis-google-21
我通过更新系统映像的 ANDROID_ABI
变量和组件名称来修复此问题 - 新值是:
- ANDROID_ABI=google_apis/armeabi-v7a
...
# Specify at least one system image,
- sys-img-armeabi-v7a-addon-google_apis-google-$ANDROID_API_LEVEL
这是上下文中的整个部分:
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
经过这些更改后,builds successfully。
编辑 2016 年 9 月 12 日
显然,2016 年年中的另一个变化导致了同样的问题。例如,here's a failed build 具有相同的错误消息。
修复 Travis 构建需要进行以下更改:
- 添加单独的
ANDOID_TAG ABI
标签变量
- 复制工具以获取新的
repository-11.xml
并安装 Android SDK 工具 25.1.x
- 更改系统映像名称以匹配新的 Android SDK
- 更改模拟器启动命令以使用新的 ABI 标记变量来指定 Google APIs
例如:
- ANDROID_ABI=google_apis/armeabi-v7a
...更改为:
- ANDROID_ABI=armeabi-v7a
- ANDROID_TAG=google_apis
- tools
需要列出两次。
系统镜像:
- sys-img-armeabi-v7a-addon-google_apis-google-23
- sys-img-armeabi-v7a-addon-google_apis-google-23
...需要改为:
- sys-img-armeabi-v7a-google_apis-23
- sys-img-armeabi-v7a-google_apis-23
启动模拟器的行更改自:
- echo no | android create avd --force -n test -t "Google Inc.:Google APIs:23" --abi $ANDROID_ABI
...至:
- echo no | android create avd --force -n test -t "android-23" --abi $ANDROID_ABI --tag $ANDROID_TAG
详情见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。
感谢@Ardock 的修复!
编辑 2016 年 11 月 28 日
我似乎 API Level 23 模拟器目前无法在 Travis 上使用上述内容 - android create avd --force -n test -t "android-23" --abi "armeabi-v7a" --tag "google_apis"
产生错误 Error: Invalid --tag google_apis for the selected target.
有关更多详细信息,请参阅 https://github.com/OneBusAway/onebusaway-android/issues/720。
此外,显然 ARM ABI 当前不适用于 API 级别 24 或 25 (Android 7.1.1) - 请参阅 this issue 获取 SDK 管理器的屏幕截图。
已将问题发布到 Android Studio Google+ 社区:
https://plus.google.com/+SeanBarbeau/posts/adNGGtJFhvi?sfc=true
晚会有点晚了,但这仍然是一个问题,我发现解决它的唯一方法是在模拟器上使用 android-22
。
这是我的.travis.yml
供参考。
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
我正在尝试将 Android 项目从使用 API Level 19 SDK 和构建工具更新到最新的 API Level 21,包括 Google API秒。在此更新之前,Travis 上的一切 运行 都很好(例如,参见 this build)。
当我 运行 使用新的 API 级别时,我看到以下错误:
0.42s$ echo no | android create avd --force -n test -t "Google Inc.:Google APIs:"$ANDROID_API_LEVEL --abi $ANDROID_ABI
Valid ABIs: no ABIs.
Error: Invalid --abi armeabi-v7a for the selected target.
The command "echo no | android create avd --force -n test -t "Google Inc.:Google APIs:"$ANDROID_API_LEVEL --abi $ANDROID_ABI" failed and exited with 1
有关完整的 Travis 输出,请参阅 this build。
这是我的。travis.yml:
language: android
jdk: oraclejdk7
# Turn off caching to avoid any caching problems
cache: false
# Use the Travis Container-Based Infrastructure (see #203)
sudo: false
env:
global:
- ANDROID_API_LEVEL=21
- ANDROID_BUILD_TOOLS_VERSION=21.1.2
- ANDROID_ABI=armeabi-v7a
android:
components:
- platform-tools
- tools
- build-tools-$ANDROID_BUILD_TOOLS_VERSION
- android-$ANDROID_BUILD_TOOLS_VERSION
# 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-android-$ANDROID_BUILD_TOOLS_VERSION
before_script:
# Create and start emulator
- echo no | android create avd --force -n test -t "Google Inc.:Google APIs:"$ANDROID_API_LEVEL --abi $ANDROID_ABI
- emulator -avd test -no-skin -no-audio -no-window &
script:
- ./wait_for_emulator
- ./gradlew connectedCheck -PdisablePreDex
我的 build.gradle 是 here。
同样,我在新 Travis 构建中唯一改变的是 API 级别和构建工具级别。
显然 Google APIs 系统映像和 ABI 参数的名称已更改:
- ABI =
armeabi-v7a
至google_apis/armeabi-v7a
- 系统映像 =
sys-img-armeabi-v7a-android-21
到sys-img-armeabi-v7a-addon-google_apis-google-21
我通过更新系统映像的 ANDROID_ABI
变量和组件名称来修复此问题 - 新值是:
- ANDROID_ABI=google_apis/armeabi-v7a
...
# Specify at least one system image,
- sys-img-armeabi-v7a-addon-google_apis-google-$ANDROID_API_LEVEL
这是上下文中的整个部分:
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
经过这些更改后,builds successfully。
编辑 2016 年 9 月 12 日
显然,2016 年年中的另一个变化导致了同样的问题。例如,here's a failed build 具有相同的错误消息。
修复 Travis 构建需要进行以下更改:
- 添加单独的
ANDOID_TAG ABI
标签变量 - 复制工具以获取新的
repository-11.xml
并安装 Android SDK 工具 25.1.x - 更改系统映像名称以匹配新的 Android SDK
- 更改模拟器启动命令以使用新的 ABI 标记变量来指定 Google APIs
例如:
- ANDROID_ABI=google_apis/armeabi-v7a
...更改为:
- ANDROID_ABI=armeabi-v7a
- ANDROID_TAG=google_apis
- tools
需要列出两次。
系统镜像:
- sys-img-armeabi-v7a-addon-google_apis-google-23
- sys-img-armeabi-v7a-addon-google_apis-google-23
...需要改为:
- sys-img-armeabi-v7a-google_apis-23
- sys-img-armeabi-v7a-google_apis-23
启动模拟器的行更改自:
- echo no | android create avd --force -n test -t "Google Inc.:Google APIs:23" --abi $ANDROID_ABI
...至:
- echo no | android create avd --force -n test -t "android-23" --abi $ANDROID_ABI --tag $ANDROID_TAG
详情见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。
感谢@Ardock 的修复!
编辑 2016 年 11 月 28 日
我似乎 API Level 23 模拟器目前无法在 Travis 上使用上述内容 - android create avd --force -n test -t "android-23" --abi "armeabi-v7a" --tag "google_apis"
产生错误 Error: Invalid --tag google_apis for the selected target.
有关更多详细信息,请参阅 https://github.com/OneBusAway/onebusaway-android/issues/720。
此外,显然 ARM ABI 当前不适用于 API 级别 24 或 25 (Android 7.1.1) - 请参阅 this issue 获取 SDK 管理器的屏幕截图。
已将问题发布到 Android Studio Google+ 社区: https://plus.google.com/+SeanBarbeau/posts/adNGGtJFhvi?sfc=true
晚会有点晚了,但这仍然是一个问题,我发现解决它的唯一方法是在模拟器上使用 android-22
。
这是我的.travis.yml
供参考。
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