Android Travis CI 错误:所选目标的 --abi armeabi-v7a 无效

Posted

技术标签:

【中文标题】Android Travis CI 错误:所选目标的 --abi armeabi-v7a 无效【英文标题】:Android Travis CI Error: Invalid --abi armeabi-v7a for the selected target 【发布时间】:2019-06-22 19:57:48 【问题描述】:

我的 Travis 构建不断失败,因为它显然无法识别 arm abi。这是我完整的.travis.yml

language: android
sudo: required

env:
  global:
  - ANDROID_API_LEVEL=28
  - ANDROID_BUILD_TOOLS_VERSION=28.0.3
  - ANDROID_ABI=armeabi-v7a
  - ANDROID_EMU_API_LEVEL=27

android:
  components:
    - tools
    - platform-tools
    - tools # appears twice as per Travis docs
    - build-tools-$ANDROID_BUILD_TOOLS_VERSION
    - android-$ANDROID_API_LEVEL
    - android-$ANDROID_EMU_API_LEVEL
    - extra-android-m2repository
    - sys-img-$ANDROID_ABI-android-$ANDROID_EMU_API_LEVEL
  licenses:
    - 'android-sdk-preview-license-52d11cd2'
    - 'android-sdk-license-.+'
    - 'google-gdk-license-.+'

before_cache:
  - rm -f  $HOME/.gradle/caches/modules-2/modules-2.lock
  - rm -fr $HOME/.gradle/caches/*/plugin-resolution/

cache:
  directories:
  - $HOME/.gradle/caches/
  - $HOME/.gradle/wrapper/
  - $HOME/.android/build-cache

before_script:
  - echo no | android create avd --force -n test -t android-$ANDROID_EMU_API_LEVEL --abi $ANDROID_ABI -c 100M
  - emulator -avd test -no-audio -no-window &
  - android-wait-for-emulator
  - adb shell input keyevent 82 &
  - chmod +x gradlew

script:
  - android list target
  - ./gradlew clean build
  - ./gradlew test
  - ./gradlew connectedCheck

我也试过把模拟器里的abi改成google_apis/armeabi-v7a,没用。还尝试在系统映像下载中添加google_apis。我目前已经尝试过API_LEVEL 22、27 和 28。 这里有什么问题?

【问题讨论】:

你解决了吗?遇到一个非常相似的问题.. 仍然没有解决@aleksandrbel 【参考方案1】:

你可以试试ANDROID_ABI=arm64-v8a而不是ANDROID_ABI=armeabi-v7a

【讨论】:

谢谢,但我仍然收到Valid ABIs: no ABIs. Error: Invalid --abi arm64-v8a for the selected target. 你知道你的目标是什么abi吗? 目标是什么意思?我认为 Travis 默认是 armeabi-v7a,就像他们的文档说的那样。 "Error: Invalid --abi armeabi-v7a for the selected target"表示目标不是好目标,你也可以试试x86x86_64,Valid ABIs: no ABIs.你的目标可能无法识别对不起,我帮不了你了 是的... Travis 还不支持 x86。还是谢谢【参考方案2】:

我不知道这是否仍然相关,因为它是在 4 个月前被问到的,但我最近也遇到了同样的问题。我尝试了人们建议的许多不同的方法,但在我以这种方式设置之前都没有奏效:

language: android
sudo: required
jdk: oraclejdk8

env:
  global:
  - ANDROID_API_LEVEL=28
  - ANDROID_BUILD_TOOLS_VERSION=28.0.3
  - ANDROID_ABI=armeabi-v7a

android:
  components:
    - tools
    - platform-tools
    - tools
    - extra-android-m2repository
  licenses:
    - 'android-sdk-preview-license-52d11cd2'
    - 'android-sdk-license-.+'
    - 'google-gdk-license-.+'

before_install:
  - touch $HOME/.android/repositories.cfg
  - yes | sdkmanager "platforms;android-28"
  - yes | sdkmanager "build-tools;28.0.3"

before_cache:
  - rm -f  $HOME/.gradle/caches/modules-2/modules-2.lock
  - rm -fr $HOME/.gradle/caches/*/plugin-resolution/

cache:
  directories:
  - $HOME/.gradle/caches/
  - $HOME/.gradle/wrapper/
  - $HOME/.android/build-cache

before_script:
  - chmod +x gradlew

script:
  - ./gradlew clean build
  - ./gradlew test

【讨论】:

以上是关于Android Travis CI 错误:所选目标的 --abi armeabi-v7a 无效的主要内容,如果未能解决你的问题,请参考以下文章

travis.ci 上的 Android 构建变体

如何更改 Travis CI 中的 xctool 目标

Travis CI 跳过测试(Gradle Android 项目)

Travis-CI 在提交期间给出错误

Travis-CI 有:错误:找不到方案

无法在 Travis CI/Android SDK v20 上使用支持库构建