ฉันกำลังเล่นกับ Android Studio โดยการทดสอบบางโปรเจ็กต์จาก GitHub และเมื่อฉันพยายามเลียนแบบ apk มันไม่ให้ฉันเลือกโปรแกรมจำลอง
มันบอกฉัน:
อุปกรณ์รองรับ x86 แต่ APK รองรับเฉพาะ armeabi-v7a
ทำไมมันถึงทำเช่นนี้?
ฉันกำลังเล่นกับ Android Studio โดยการทดสอบบางโปรเจ็กต์จาก GitHub และเมื่อฉันพยายามเลียนแบบ apk มันไม่ให้ฉันเลือกโปรแกรมจำลอง
มันบอกฉัน:
อุปกรณ์รองรับ x86 แต่ APK รองรับเฉพาะ armeabi-v7a
ทำไมมันถึงทำเช่นนี้?
คำตอบ:
ฉันมีปัญหาเดียวกันผมชำระเงินbuild.gradleจากโมดูล: app ปรากฎว่ามีการกำหนดค่าดังกล่าว:
ndk {
abiFilters "armeabi-v7a", "x86"
}
เมื่อฉันแสดงความคิดเห็นทั้งหมดทุกอย่างทำงานได้ดี
ผมพยายามที่จะจัดการกับโครงการตอบสนอง Android พื้นเมือง
ปิดการดีบัก USB และเปิดอุปกรณ์ฮาร์ดแวร์อีกครั้ง
Allow computer to connect to this device
พรอมต์ไม่แสดงในครั้งแรก แต่ทำครั้งที่สอง
บน Linux: ไฟล์> ไม่ถูกต้องแคช / รีสตาร์ทบนโทรศัพท์: ชาร์จอุปกรณ์นี้แทนเปลี่ยนเป็นการถ่ายโอนรูปภาพ (PTP)
Camera (PTP)
เป็นMedia Device (MTP)
และมันก็ใช้ได้เช่นกัน ขอขอบคุณ!
ฉันมีปัญหาที่คล้ายกันนี้และฉันได้แก้ไขแล้วโดยเพิ่มค่า "x86" ในรายการ "abiFilters" ดังต่อไปนี้ -
[เปิดไฟล์ build.gradle (Module: app)] แล้วค้นหา " ndk " ในdeafultSectionแล้วเพิ่ม "x86" เข้าไป!
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86"
}
หวังว่าจะช่วย !!!
armeabi
หากคุณกำหนดเป้าหมาย SDK 19 ขึ้นไป Android เองไม่รองรับตั้งแต่ 4.4
ในกรณีของเครื่อง 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
ในที่สุดก็สามารถรันบนเครื่องได้
ในกรณีของฉันแอปของฉันใช้ไลบรารีดั้งเดิม แต่ละแพลตฟอร์มต้องการการสร้าง libs ที่สอดคล้องกัน
ดังนั้นจึงไม่สร้างแพลตฟอร์ม lib ดั้งเดิมของ x86 (หรืออื่น ๆ ) คุณต้องเพิ่ม abifilter ที่ใดที่หนึ่ง:
มีหลายที่ที่สามารถระบุตัวกรอง abi:
Application.mk เพิ่มแพลตฟอร์มที่คุณต้องการดังนี้:
APP_ABI := armeabi armeabi-v7a x86
build.gradle
ค้นหา abiFilters และเพิ่มแพลตฟอร์มที่คุณต้องการดังนี้:
abiFilters "armeabi","armeabi-v7a","x86"
คุณต้องเชื่อมต่ออุปกรณ์ของคุณใหม่และลองปิด /เปิดตัวเลือกสำหรับนักพัฒนา
อุปกรณ์รองรับ x86 แต่ APK รองรับเฉพาะ armeabi-v7a)
ดูเหมือนว่าคุณใช้x86
รูปภาพในโปรแกรมจำลอง
สร้างแยกต่างหาก เลือกแท็บ "รูปภาพอื่น ๆ " เพื่อค้นหาอุปกรณ์แขนหากคุณต้องการ
หรือเรียกใช้บนอุปกรณ์จริง repo ที่คุณระบุไว้มีไว้เพื่อทำงานบน Raspberry Pi 3 / ODroid ฉันคิดว่า
สามารถยืนยันการเปิด / ปิดการดีบัก USB ในตัวเลือกสำหรับนักพัฒนาเพื่อแก้ไขปัญหา อาจถึงขั้นยกเลิกหน้าต่าง "Select Deployment Target" ใน Android Studio และลองเรียกใช้แอปอีกครั้งหลังจากสลับการดีบัก USB
สำหรับฉันมันใช้งานได้กับการเปลี่ยนตัวเลือกสายเคเบิลจาก
-> Charge Only.
ถึง
-> Transfer file.
เพียงไปที่อุปกรณ์Settings >> Developer Options >> Restore Default Settings
จากนั้นเปิดใช้งานUSB debugging
รหัสด้านล่างใช้ได้ผลสำหรับฉัน:
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86'
}
ฉันเริ่มรับสิ่งนี้บนอุปกรณ์จริง การแก้ไขคือไปที่การตั้งค่านักพัฒนาแล้วปิดและเปิดการดีบัก USB
หากคุณใช้ Ubuntu:
adb kill-server
adb start-server
มันทำงานให้ฉันบน windows OS
ทดสอบรหัสของคุณบนโทรศัพท์จริง หากคุณยังคงมีปัญหาเดิมให้นำเข้ารหัสของคุณอีกครั้งและก่อนหน้านี้คุณควรอัปเดต SDK ของคุณและสร้างโปรแกรมจำลองใหม่ด้วยอิมเมจระบบ ARM
หลายครั้งหมายความว่าคุณไม่ได้อนุญาตให้แล็ปท็อป / คอมพิวเตอร์เข้าถึงอุปกรณ์ของคุณ ดูอุปกรณ์ของคุณแล้วคลิกปุ่ม "อนุญาตการเข้าถึง" รวมถึงสิทธิ์ในการแก้ไขข้อบกพร่อง
การเรียกใช้ AVD โดยใช้โปรเซสเซอร์ x86 นั้นเร็วกว่าการใช้โปรแกรมจำลอง ARM ถึง 10 เท่า แต่ส่วนใหญ่แล้วคุณจะรวบรวมเฉพาะ APK สำหรับ ARM เท่านั้น เพื่อให้การจำลองทำงานเร็วขึ้นโดยใช้ x86 AVD ฉันต้องทำสิ่งต่อไปนี้ (สำหรับโครงการ Cocos2d-x):
แอป / 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})
}
}
}
การรีสตาร์ทอุปกรณ์ช่วยแก้ปัญหาให้ฉันได้ (React-native)
มันเกิดขึ้นกับฉันหลังจากอัปเดต Android Studio ในกรณีของฉันมันเกิดขึ้นเนื่องจากการตั้งค่าการสร้างไม่ได้กำหนดค่าโดยอัตโนมัติใน x86Debug-x86 เพียงแค่เปลี่ยนโดยเปิด Build >> เลือก Build Variant >> เปลี่ยนตัวเลือก build variant จาก armeabi-v7a เป็น x86Debug-x86 หรืออะไรก็ได้ที่คุณต้องการในอีมูเลเตอร์
ลองเปิดใช้งานUnknown Sourcesจากตัวเลือกความปลอดภัย มันได้ผลสำหรับฉัน
ฉันเห็นสิ่งนี้
หากคุณใช้ CMake สำหรับงานสร้างของคุณให้ตรวจสอบไฟล์ \ proj.android \ gradle.properties และอัปเดต PROP_APP_ABI เพื่อรวมการสร้างสำหรับ x86 หรือคุณสามารถใช้ armeabi-v7a หรือ arm64-v8a Android ภาพ
ตัวอย่าง: PROP_APP_ABI = armeabi-v7a: arm64-v8a: x86
หากคุณไม่ได้ใช้ cmake ให้ดูใน \ proj.android \ app \ jni \ Application.mk ในกรณีที่คุณต้องการเปลี่ยนการตั้งค่า ABI ที่นั่น