'기기는 x86을 지원하지만 APK는 armeabi-v7a 만 지원'오류의 이유는 무엇입니까?


91

GitHub에서 일부 프로젝트를 테스트하여 Android Studio를 사용하고 있으며 apk를 에뮬레이션하려고 할 때 에뮬레이터를 선택할 수 없습니다.

그것은 나에게 말한다 :

기기는 x86을 지원하지만 APK는 armeabi-v7a 만 지원합니다.

왜 이렇게합니까?


어떤 AVD를 사용하셨습니까? 어떤 시스템 이미지? 어떤 GitHub 프로젝트입니까?
— OneCricketeer

즉, Intel x86 이미지는 ARM 코드를 실행하지 않습니다.
— OneCricketeer


나는 넥서스 10을 실행 안드로이드 사용하고 싶었 5.1
— 알렉산더 바라

좋습니다. ARM eabi v7 시스템 이미지 또는 Intel Atom x86 이미지를 사용 했습니까? 설치 한 SDK 관리자를 확인하십시오.
— OneCricketeer

답변:


86

같은 문제가 있었는데 module : app 에서 build.gradle 을 확인했습니다 . 다음과 같은 구성이 있음이 밝혀졌습니다.

    ndk {
        abiFilters "armeabi-v7a", "x86"
    }

내가 모두 댓글을 달았을 때 모든 것이 잘 작동했습니다.

React Native Android 프로젝트를 다루려고했습니다 .


1
나는 당신이 build.gradle을 의미한다고 생각한다;)
— Ryan James

2
나는이 같은 문제와 나를 위해이 있었다 "86"그냥 없어진
— 토마스

1
이것은 나를 위해 일했습니다-그러나 내가해야 할 일은 실제 장치에서 디버그를 허용하는 것이 었고이 줄의 주석을 다시 제거 할 수있었습니다.
— Boomer Rogers

어떤 섹션에 ndk를 넣어야합니까?
— Ömrüm Çetin

java / kotlin에서 나를 위해 작동하지 않았지만 빌드되지만 앱이 충돌합니다.
— mozilla_firefox

77

USB 디버깅을 끄고 하드웨어 장치에서 다시 켭니다.


10
그 댓글은 일반적으로 반대표를 던지지 만 실제로 작동합니다!
— Ahmed Hegazy

2
이것은 Allow computer to connect to this device프롬프트가 처음에 표시되지 않고 두 번째로 표시 되었기 때문에 작동 합니다.
— Kyle Clegg

이 작업은 GitHub에서 새 프로젝트를 시작할 때 "이 컴퓨터에 대해 기억"이라고 표시된 컴퓨터에서 작동했습니다.
— Z. 베이글

그래서. ABI 필터에 새 프로세서 아키텍처를 추가 한 후 스튜디오에서 장치 인식을 중지했습니다. 이 팁은 문제 해결에 도움이되었습니다. !!
— Vetalll

나를 위해 이것은 에뮬레이터에서 일어나고 있습니다
— Akhil Surapuram

41

Android Studio에서 Build 메뉴를 선택하고

여기에 이미지 설명 입력

그런 다음 Select Build Variant ... 를 클릭 하고 'Build Variants'창에서 x86Debug (또는 릴리스)를 선택하십시오.

여기에 이미지 설명 입력

추신 : Mac에서 Android Studio 2.3을 사용하고 있습니다.


이것은 완벽하게 작동했습니다. 내 gradle 설정은 ARM 및 x86 빌드를 모두 정의했지만 Android Studio에 ARM 변형 (iOS 용)과 반대로 x86 변형을 빌드하도록 지시해야했습니다. 감사!
— jevon

프로젝트를 선택해야합니다. 그렇지 않으면이를 수행하는 옵션이 회색으로 표시됩니다. 회색으로 표시 될 수있는 다른 조건도 있다고 생각합니다. Make Clean 및 재건이 필요할 수 있습니다.
— Dronz

16

Linux : 파일> 캐시 무효화 / 다시 시작 전화 : 대신이 장치 충전을 사진 전송 (PTP)으로 변경합니다.


1
위의 답변 중 어느 것도 작동하지 않았습니다. 이것은 효과가 있었다. 감사합니다.
— thedarkpassenger

에서 Camera (PTP)로 변경 Media Device (MTP)했고 작동합니다. 감사합니다!
— Konayuki

11

비슷한 문제가 있었는데 아래와 같이 "abiFilters"목록에 "x86"값을 추가하여 해결했습니다.

[build.gradle (Module : app) 파일 열기] deafultSection 에서 " ndk "를 검색 하고 "x86"을 추가하세요!

ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }

도움이 되었기를 바랍니다 !!!


1
armeabiSDK 19 이상을 타겟팅하는 경우 드롭 해야합니다. 안드로이드 자체는 4.4부터 지원하지 않습니다
— mradzinski

9

내 경우에는 Linux 시스템 adb devices이

List of devices attached 
44b194f5    no permissions

그런 다음 adb 서버를 다시 시작했습니다.

sudo adb kill-server

그리고

sudo adb start-server

그런 다음 장치를 연결하고 디버깅을 켜고

adb devices
List of devices attached 
44b194f5    device

마침내 장치에서 실행할 수있었습니다


7

제 경우에는 앱이 일부 네이티브 라이브러리를 사용합니다. 각 플랫폼에는 해당 라이브러리를 빌드해야합니다.

따라서 x86 (또는 기타) 플랫폼의 기본 lib가 생성되지 않습니다. 어딘가에 abifilter를 추가해야합니다.

abi 필터를 지정할 수있는 여러 위치가 있습니다.

  • Application.mk는 다음과 같이 필요한 플랫폼을 추가합니다.

    APP_ABI := armeabi armeabi-v7a x86
    
  • build.gradle

    abiFilters를 찾고 다음과 같이 필요한 플랫폼을 추가하십시오.

    abiFilters   "armeabi","armeabi-v7a","x86"
    


6

기기는 x86을 지원하지만 APK는 armeabi-v7a 만 지원합니다.)

x86에뮬레이터에서 이미지 를 사용한 것 같습니다 .

별도의 계정을 만듭니다. 필요한 경우 "기타 이미지"탭을 선택하여 팔 장치를 찾습니다.

또는 실제 장치에서 실행하십시오. 나열한 리포지토리는 Raspberry Pi 3 / ODroid에서 실행되는 것입니다.


6

개발자 옵션에서 USB 디버깅을 켜거나 끄면 문제가 해결되었는지 확인할 수 있습니다. Android Studio에서 "Select Deployment Target"창을 취소하고 USB 디버깅을 토글 한 후 앱을 다시 실행 해보십시오.



4

장치 Settings >> Developer Options >> Restore Default Settings로 이동 한 다음 활성화하십시오.USB debugging



2

내 물리적 장치에서 나는 이것을 받기 시작했습니다. 수정 사항은 개발자 설정으로 이동하여 USB 디버깅을 껐다가 켜는 것입니다.


2

Ubuntu를 사용하는 경우 :

  1. USB 디버깅이 켜져 있는지 확인
  2. 케이블 연결 확인
  3. 알림 바에서 안드로이드 시스템 알림을 확인하고 충전 상태를 파일 전송으로 변경하려면 터치하십시오.
  4. 이제 터미널로 이동하여 다음을 입력하십시오.이 명령을 실행 한 후 adb devices adb restart and your device show in list


0

실제 전화에서 코드를 테스트하십시오. 여전히 동일한 문제가있는 경우 코드를 다시 가져오고 그 전에 SDK를 업데이트하고 ARM 시스템 이미지로 새 에뮬레이터를 만들어야합니다.


0

이는 랩톱 / 컴퓨터에 장치에 대한 액세스 권한을 부여하지 않았 음을 의미합니다. 장치를 살펴보고 "액세스 허용"버튼과 디버깅 권한을 클릭합니다.


0

x86 프로세서를 사용하여 AVD를 실행하는 것은 ARM 에뮬레이터를 사용하는 것보다 10 배 빠르지 만 대부분의 경우 ARM 용 APK 만 컴파일합니다. x86 AVD를 사용하여 더 빠른 에뮬레이션을 실행하려면 다음을 수행해야했습니다 (Cocos2d-x 프로젝트의 경우).

  • app / jni / Android.mk

    APP_ABI := armeabi-v7a:x86
    
  • gradle.properties

    PROP_APP_ABI=armeabi-v7a:x86
    
  • app / build.gradle

    android {
        ...
        defaultConfig {
            ...
            ndk {
                abiFilters = []
                abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String})
            }
        }
    }
    

0

장치를 다시 시작하면 문제가 해결되었습니다 (React-native).


0

Android Studio를 업데이트 한 후 나에게 일어났습니다. 제 경우에는 빌드 설정이 x86Debug-x86에 자동으로 구성되지 않았기 때문에 발생했습니다. Build >> Select Build Variant >>를 열어서 변경하십시오. 빌드 변형 옵션을 armeabi-v7a에서 x86Debug-x86 또는 에뮬레이터에서 필요한 것으로 변경하십시오.



0

나는 이것을 본다

빌드에 CMake를 사용하는 경우 \ proj.android \ gradle.properties 파일을 확인하고 x86 용 빌드를 포함하도록 PROP_APP_ABI를 업데이트하거나, 대신 armeabi-v7a 또는 arm64-v8a Android를 사용할 수 있습니다. 이미지.

예 : PROP_APP_ABI = armeabi-v7a : arm64-v8a : x86

cmake를 사용하지 않는 경우 ABI 설정을 변경해야하는 경우 \ proj.android \ app \ jni \ Application.mk를 확인하십시오.


StackOverflow에 오신 것을 환영합니다. 누군가의 문제를 최대한 빨리 해결할 수 있기 때문에 답변을 이해하는 데 필요한 경우 설명과 코드를 추가하십시오.
— Nensi Kasundra
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.