ฉันพยายามติดตั้งแอพลงใน Android L Preview Intel Atom Virtual Device ล้มเหลวด้วยข้อผิดพลาด:
INSTALL_FAILED_NO_MATCHING_ABIS
มันหมายความว่าอะไร?
ฉันพยายามติดตั้งแอพลงใน Android L Preview Intel Atom Virtual Device ล้มเหลวด้วยข้อผิดพลาด:
INSTALL_FAILED_NO_MATCHING_ABIS
มันหมายความว่าอะไร?
คำตอบ:
INSTALL_FAILED_NO_MATCHING_ABIS
คือเมื่อคุณพยายามติดตั้งแอพที่มีไลบรารีดั้งเดิมและไม่มีไลบรารีดั้งเดิมสำหรับสถาปัตยกรรมซีพียูของคุณ ตัวอย่างเช่นหากคุณรวบรวมแอพสำหรับarmv7และพยายามติดตั้งลงบนอีมูเลเตอร์ที่ใช้สถาปัตยกรรมIntelแทนจะไม่ทำงาน
INSTALL_FAILED_NO_MATCHING_ABIS คือเมื่อคุณพยายามติดตั้งแอพที่มีไลบรารี่เนทีฟและไม่มีไลบรารี่เนทีฟสำหรับสถาปัตยกรรมซีพียูของคุณ ตัวอย่างเช่นหากคุณรวบรวมแอพสำหรับ armv7 และพยายามติดตั้งลงบนอีมูเลเตอร์ที่ใช้สถาปัตยกรรม Intel แทนจะไม่ทำงาน
การใช้ Xamarin ใน Visual Studio 2015 แก้ไขปัญหานี้โดย:
ใต้ "สถาปัตยกรรมที่รองรับ" ให้ตรวจสอบสิ่งต่อไปนี้:
บันทึก
แก้ไข:โซลูชันนี้ได้รับการรายงานว่าทำงานบนVisual Studio 2017เช่นกัน
แก้ไข 2:โซลูชันนี้ได้รับการรายงานว่าทำงานบนVisual Studio 2017 สำหรับ Macเช่นกัน
ฉันโพสต์คำตอบจากหัวข้ออื่นเพราะมันทำงานได้ดีสำหรับฉันเคล็ดลับคือการเพิ่มการสนับสนุนสำหรับสถาปัตยกรรมทั้งสอง:
โพสต์สิ่งนี้เพราะฉันไม่สามารถหาคำตอบได้โดยตรงและต้องดูโพสต์ที่แตกต่างกันสองสามอย่างเพื่อให้ได้สิ่งที่ฉันต้องการ ...
ฉันสามารถใช้อีมูเลเตอร์ x86 Accelerated (HAXM) เพียงแค่เพิ่มสิ่งนี้ลงในสคริปต์ build.gradle ของโมดูลของฉัน Inside android {} block:
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
เรียกใช้ (สร้าง) ... ตอนนี้จะมี (yourapp) -x86-debug.apk ในโฟลเดอร์เอาท์พุทของคุณ ฉันแน่ใจว่ามีวิธีการติดตั้งแบบอัตโนมัติเมื่อเรียกใช้ แต่ฉันเพิ่งเริ่มต้นตัวจำลอง HAXM ที่ต้องการและใช้บรรทัดคำสั่ง:
adb install (yourapp)-x86-debug.apk
(yourapp)-x86-debug.apk
ไฟล์ในผลลัพธ์โครงการของฉัน
หากคุณใช้ Genymotion คุณต้องติดตั้ง ARM Translation และ GApps
นี่เป็นข้อผิดพลาดแปลก ๆ ที่อาจเกิดจากการทำงานหลายแอพของคุณ หากต้องการหลีกเลี่ยงให้ใช้บล็อกต่อไปนี้ในไฟล์build.gradleของแอปของคุณ:
android {
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
...[rest of your gradle script]
ฉันรู้ว่ามีคำตอบมากมายที่นี่ แต่รุ่น TL; DR คือสิ่งนี้ (หากคุณใช้ Xamarin Studio):
Options
Android Build
Advanced
แท็บx86
/ armeabi-v7a
/ armeabi
)วิธีนี้ใช้ได้ผลสำหรับฉัน ลองทำเช่นนี้เพิ่มบรรทัดต่อไปนี้ในไฟล์build.gradleของแอป
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
บน Android 8:
apache.commons.io:2.4
มันให้ INSTALL_FAILED_NO_MATCHING_ABIS ลองเปลี่ยนเป็น 2.5 หรือ 2.6 และมันจะทำงานหรือแสดงความคิดเห็นออกมา
ความคิดเห็นของ @ enl8enmentnow ควรเป็นคำตอบเพื่อแก้ไขปัญหาโดยใช้ genymotion:
หากคุณมีปัญหานี้กับ Genymotion แม้ว่าจะใช้ตัวแปล ARM ก็เพราะคุณกำลังสร้างอุปกรณ์เสมือน x86 เช่น Google Nexus 10 เลือกอุปกรณ์เสมือน ARM แทนเช่นหนึ่งในแท็บเล็ตที่กำหนดเอง
ฉันมีปัญหานี้โดยใช้ห้องสมุด bitcoinJ (org.bitcoinj: bitcoinj-core: 0.14.7) เพิ่มไปยัง build.gradle (ในแอปโมดูล) ตัวเลือกบรรจุภัณฑ์ภายในขอบเขต Android มันช่วยฉัน
android {
...
packagingOptions {
exclude 'lib/x86_64/darwin/libscrypt.dylib'
exclude 'lib/x86_64/freebsd/libscrypt.so'
exclude 'lib/x86_64/linux/libscrypt.so'
}
}
สำหรับ genymotion บน mac ฉันได้รับข้อผิดพลาด INSTALL_FAILED_NO_MATCHING_ABIS ขณะติดตั้ง apk ของฉัน
ในโครงการของฉันไม่มี "APP_ABI" แต่ฉันเพิ่มเข้าไปตามนั้นและสร้างเพียง apk เดียวสำหรับสถาปัตยกรรมทั้งสอง แต่มันก็ใช้งานได้ https://stackoverflow.com/a/35565901/3241111
ใน visual studio community edition 2017 บางครั้งการเลือก ABIs ที่รองรับจากตัวเลือก Android จะไม่ทำงาน
ในกรณีดังกล่าวโปรดตรวจสอบว่า. csproj มีบรรทัดต่อไปนี้และไม่มีบรรทัดที่ซ้ำกันในการกำหนดค่าบิลด์เดียวกัน
<AndroidSupportedAbis>armeabi;armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
เพื่อแก้ไข
โดยทั่วไปหากคุณลองทุกอย่างด้านบนและยังคงมีข้อผิดพลาดเดียวกัน "เพราะฉันกำลังประสบปัญหานี้มาก่อนด้วย" ให้ตรวจสอบว่า. jar หรือ. aar หรือโมดูลที่คุณเพิ่มอาจเป็นไลบรารีหนึ่งที่ใช้ ndk และหนึ่งนั้นไม่สนับสนุน 8.0 (Oreo) + ฉันกำลังใช้ซ็อกเก็ต Microsoft SignalR Library เพิ่มไฟล์. jar และในภายหลังฉันพบแอปที่ไม่ได้ติดตั้งใน Oreo หลังจากนั้นฉันก็เอาห้องสมุดนั้นออกเพราะในปัจจุบันไม่มีวิธีแก้ปัญหาในหน้าคอมไพล์แล้ว .
ดังนั้นโปรดตรวจสอบไลบรารี่ที่คุณใช้และค้นหาถ้าคุณต้องการมัน
ฉันประสบปัญหานี้เมื่อย้ายจาก Android 7 (Nougat) เป็น Android 8 (Oreo)
ฉันได้ลองหลายวิธีข้างต้นและฉันโชคร้ายไม่มีอะไรทำงาน
ดังนั้นฉันจึงเปลี่ยนไฟล์. apk ไปเป็นไฟล์. zip แยกออกมาและพบว่าโฟลเดอร์libซึ่งไฟล์นี้อยู่ที่นั่น/x86_64/darwin/libscrypt.dylibดังนั้นเพื่อลบนี่ฉันเพิ่มรหัสในโมดูลbuild.gradleด้านล่างของ Android ส่วน (เช่น )
packagingOptions {
exclude 'lib/x86_64/darwin/libscrypt.dylib'
exclude 'lib/x86_64/freebsd/libscrypt.so'
exclude 'lib/x86_64/linux/libscrypt.so'
}
แก้ไขปัญหาไชโยแล้ว
ในกรณีทั่วไปเพื่อค้นหาว่าการพึ่งพาไลบรารีใดที่มี ABI ที่เข้ากันไม่ได้
คุณอาจลองอัพเกรดรุ่น / ลบ / แทนที่ไลบรารีเหล่านี้เพื่อแก้ปัญหา INSTALL_FAILED_NO_MATCHING_ABIS เมื่อติดตั้งปัญหา apk
เรื่องนี้เกิดขึ้นกับฉัน ฉันตรวจสอบตัวจัดการ SDK และบอกฉันว่าฉันใช้อยู่มีการอัปเดต ฉันอัปเดตแล้วและปัญหาก็หายไป
ค่อนข้างช้า แต่เพิ่งเจอกัน Xamarin.Android
นี้สำหรับ ตรวจสอบให้แน่ใจว่าคุณไม่ได้พยายามแก้ไขข้อบกพร่องในโหมดนำออกใช้ ฉันได้รับข้อผิดพลาดเดียวกันนี้แน่นอนถ้าอยู่ในโหมดวางจำหน่ายและพยายามแก้ไขข้อผิดพลาด เพียงเปลี่ยนจากการปล่อยเป็นการดีบั๊กอนุญาตให้ฉันติดตั้งอย่างถูกต้อง
ในกรณีของฉันฉันจำเป็นต้องดาวน์โหลดแอปพลิเคชันรุ่น x86