답변:
INSTALL_FAILED_NO_MATCHING_ABIS
네이티브 라이브러리가 있고 cpu 아키텍처를위한 네이티브 라이브러리가없는 앱을 설치하려고 할 때입니다. 예를 들어 armv7 용 앱을 컴파일 하고 인텔 아키텍처 를 사용하는 에뮬레이터에 설치하려고하면 작동하지 않습니다.
INSTALL_FAILED_NO_MATCHING_ABIS는 네이티브 라이브러리가 있고 cpu 아키텍처를위한 네이티브 라이브러리가없는 앱을 설치하려고 할 때입니다. 예를 들어 armv7 용 앱을 컴파일하고 인텔 아키텍처를 사용하는 에뮬레이터에 설치하려고하면 작동하지 않습니다.
Visual Studio 2015에서 Xamarin 사용. 다음 방법으로이 문제를 해결하십시오.
"지원되는 아키텍처"에서 다음을 확인하십시오.
저장
편집 : 이 솔루션은 Visual Studio 2017 에서도 작동하는 것으로보고되었습니다 .
편집 2 : 이 솔루션은 Mac 용 Visual Studio 2017 에서도 작동하는 것으로보고되었습니다 .
다른 스레드에서 대답을 게시하고 있습니다. 왜냐하면 잘 작동했기 때문입니다. 트릭은 두 아키텍처 모두에 대한 지원을 추가하는 것입니다.
직접 답변을 찾을 수 없어서 원하는 것을 얻으려면 몇 가지 다른 게시물을보아야했기 때문에 이것을 게시하는 중입니다 ...
모듈의 build.gradle 스크립트 Inside android {} 블록에 간단히 추가하여 x86 Accelerated (HAXM) 에뮬레이터를 사용할 수있었습니다.
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
Run (build) ... 이제 출력 폴더에 (yourapp) -x86-debug.apk가 있습니다. Run시 설치를 자동화하는 방법이 있다고 확신하지만 선호하는 HAXM 에뮬레이터를 시작하고 명령 줄을 사용하십시오.
adb install (yourapp)-x86-debug.apk
(yourapp)-x86-debug.apk
내 프로젝트 출력에서 파일을 찾을 수 없습니다 .
Genymotion을 사용하는 경우 ARM 번역 및 GApp 설치 가 필요합니다.
실제로 앱을 멀티 덱싱하여 발생할 수있는 이상한 오류입니다. 이 문제를 해결하려면 앱의 build.gradle 파일 에서 다음 블록을 사용 하십시오.
android {
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
...[rest of your gradle script]
안드로이드 8 :
apache.commons.io:2.4
INSTALL_FAILED_NO_MATCHING_ABIS를 제공하고 2.5 또는 2.6으로 변경하면 작동하거나 주석 처리됩니다.
@ enl8enmentnow의 의견은 genymotion을 사용하여 문제를 해결하기위한 답변이어야합니다.
ARM 변환기를 사용할 때도 Genymotion에서이 문제가 발생하면 Google Nexus 10과 같은 x86 가상 장치를 생성하기 때문입니다. 대신 Custom Tablets와 같은 ARM 가상 장치를 선택하십시오.
안드로이드 범위 내에서 패키징 옵션을 build.gradle (모듈 앱)에 추가 한 bitcoinJ 라이브러리 (org.bitcoinj : bitcoinj-core : 0.14.7)를 사용 하여이 문제가 발생했습니다. 그것은 나를 도왔다.
android {
...
packagingOptions {
exclude 'lib/x86_64/darwin/libscrypt.dylib'
exclude 'lib/x86_64/freebsd/libscrypt.so'
exclude 'lib/x86_64/linux/libscrypt.so'
}
}
Mac에서 genymotion의 경우 APK를 설치하는 동안 INSTALL_FAILED_NO_MATCHING_ABIS 오류가 발생했습니다.
내 프로젝트에는 "APP_ABI"가 없었지만 적절하게 추가했으며 두 아키텍처 모두에 대해 하나의 APK 만 작성했지만 작동했습니다. https://stackoverflow.com/a/35565901/3241111
Visual Studio Community Edition 2017에서는 Android 옵션에서 지원되는 ABI를 선택하지 못하는 경우가 있습니다.
이 경우 .csproj에 동일한 빌드 구성에 다음 줄이 있고 중복 줄이 없는지 확인하십시오.
<AndroidSupportedAbis>armeabi;armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
편집하려면
기본적으로 위의 모든 것을 시도했지만 여전히이 문제에 직면하고 있기 때문에 동일한 오류가 발생하면 추가 한 .jar 또는 .aar 또는 모듈이 ndk를 사용하는 하나의 라이브러리 일 수 있으며 8.0을 지원하지 않는지 확인하십시오 (Oreo) +, 마찬가지로 .jar 파일을 추가하는 Microsoft SignalR 소켓 라이브러리를 사용하고 있으며 나중에 Oreo에 설치되지 않는 앱을 찾은 후 현재 해당 git 페이지에 솔루션이 없기 때문에 해당 라이브러리를 제거하고 다른 라이브러리로 이동합니다. .
따라서 사용중인 라이브러리를 확인하고 열심히 필요한 경우 검색하십시오.
Android 7 (Nougat)에서 Android 8 (Oreo)로 옮길 때이 문제에 직면했습니다.
나는 위에 열거 된 여러 가지 방법을 시도했지만 내 불운에는 아무것도 효과가 없었습니다.
그래서 .apk 파일을 .zip 파일로 변경하여 압축을 풀고이 파일이있는 lib 폴더를 찾았 습니다 ./x86_64/darwin/libscrypt.dylib 그래서이를 제거하기 위해 안드로이드 섹션 아래의 build.gradle 모듈에 코드를 추가했습니다 (예 : )
packagingOptions {
exclude 'lib/x86_64/darwin/libscrypt.dylib'
exclude 'lib/x86_64/freebsd/libscrypt.so'
exclude 'lib/x86_64/linux/libscrypt.so'
}
건배 문제 해결
일반적으로 어떤 라이브러리 종속성이 호환되지 않는 ABI인지 확인하려면
APK 문제를 설치할 때 버전을 업그레이드 / 제거 / 교체하여 INSTALL_FAILED_NO_MATCHING_ABIS를 해결할 수 있습니다
필자의 경우 x86 버전의 응용 프로그램을 다운로드해야했습니다.