'기기는 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.