Lý do gây ra lỗi là gì "Thiết bị hỗ trợ x86, nhưng APK chỉ hỗ trợ armeabi-v7a"


90

Tôi đang thử nghiệm Android Studio bằng cách thử nghiệm một số dự án từ GitHub và khi tôi cố gắng mô phỏng apk, nó không cho phép tôi chọn một trình giả lập.

Nó cho tôi biết:

Thiết bị hỗ trợ x86, nhưng APK chỉ hỗ trợ armeabi-v7a

tại sao nó làm vậy?


Bạn đã sử dụng AVD nào? Hình ảnh Hệ thống gì? Dự án GitHub nào?
OneCricketeer

Nói cách khác, hình ảnh Intel x86 sẽ không chạy mã ARM.
OneCricketeer


Tôi muốn sử dụng Nexus 10 chạy Android 5.1
Alexander Ibarra

Được rồi, và bạn đã sử dụng hình ảnh hệ thống ARM eabi v7 hay hình ảnh Intel Atom x86? Kiểm tra trình quản lý SDK của bạn những gì bạn đã cài đặt.
OneCricketeer

Câu trả lời:


85

Tôi đã gặp vấn đề tương tự, tôi kiểm tra build.gradle từ module: app . Nó chỉ ra rằng có một cấu hình như vậy:

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

khi tôi nhận xét tất cả, mọi thứ hoạt động tốt.

Tôi đang cố gắng giải quyết dự án React Native Android .


1
Tôi nghĩ rằng bạn có nghĩa là build.gradle;)
Ryan James

2
Tôi đã gặp vấn đề tương tự và đối với tôi "x86" chỉ bị mất tích ở đó
thomas

1
Điều này đã hiệu quả với tôi - tuy nhiên tất cả những gì tôi phải làm là cho phép gỡ lỗi trên thiết bị thực của mình và tôi có thể bỏ ghi chú dòng này một lần nữa.
Boomer Rogers

Tôi nên đặt ndk ở phần nào?
Ömrüm Çetin

Không hoạt động với tôi trong java / kotlin, nó xây dựng nhưng ứng dụng bị treo.
mozilla_firefox

77

Tắt gỡ lỗi USB và bật lại trên thiết bị phần cứng.


10
Những nhận xét đó tôi thường không tán thành, nhưng thực ra, nó hoạt động!
Ahmed Hegazy

2
Điều này hoạt động vì Allow computer to connect to this devicelời nhắc không hiển thị lần đầu tiên nhưng đã hiển thị lần thứ hai.
Kyle Clegg

Điều này hoạt động trên máy tính mà tôi đã đánh dấu "ghi nhớ cho máy tính này" khi tôi bắt đầu một dự án mới từ GitHub.
Z. Bagley

Vì thế. Sau khi thêm kiến ​​trúc bộ xử lý mới vào bộ lọc ABI - studio đã ngừng nhận dạng thiết bị. Mẹo này đã giúp tôi giải quyết vấn đề. !!
Vetalll

Đối với tôi điều này xảy ra trong Emulator
Akhil Surapuram

41

Trong Android Studio, chọn menu Xây dựng ,

nhập mô tả hình ảnh ở đây

sau đó nhấp vào Chọn bản dựng biến thể ... và trong cửa sổ 'Bản dựng biến thể', hãy chọn x86Debug (hoặc phát hành)

nhập mô tả hình ảnh ở đây

PS: Tôi đang sử dụng Android Studio 2.3 trên Mac


Điều này hoạt động hoàn hảo - thiết lập gradle của tôi đã xác định cả bản dựng ARM và x86, nhưng tôi phải hướng dẫn Android Studio xây dựng biến thể x86 thay vì biến thể ARM (có thể dành cho iOS). Cảm ơn!
jevon

Lưu ý rằng bạn cần phải chọn dự án, nếu không tùy chọn để thực hiện việc này sẽ chuyển sang màu xám. Tôi nghĩ rằng có một số điều kiện khác cũng có thể làm nó xám đi - bạn có thể cần phải Làm sạch và xây dựng lại.
Dronz

16

Trên Linux: Tệp> Vô hiệu hóa bộ nhớ cache / Khởi động lại Trên điện thoại: Thay vào đó, Sạc thiết bị này thay đổi thành Chuyển ảnh (PTP)


1
Không có câu trả lời nào ở trên hoạt động. Điều này đã hiệu quả. Cảm ơn rất nhiều.
thedarkpassenger

Tôi đã thay đổi từ Camera (PTP)sang Media Device (MTP)và nó cũng hoạt động. Cảm ơn bạn!
Konayuki

11

Tôi đã gặp sự cố tương tự và tôi đã giải quyết nó bằng cách thêm giá trị "x86" vào danh sách "abiFilters" như bên dưới -

[Mở tệp build.gradle (Module: app)] và tìm kiếm " ndk " trong deafultSection và thêm "x86" vào đó!

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

Hy vọng nó giúp!!!


1
Bạn có thể nên giảm armeabinếu đang nhắm mục tiêu SDK 19 trở lên. Android tự nó không hỗ trợ nó bắt đầu từ 4.4
mradzinski

9

Trong trường hợp máy Linux của tôi adb devicescho thấy

List of devices attached 
44b194f5    no permissions

Sau đó khởi động lại máy chủ adb

sudo adb kill-server

và sau đó

sudo adb start-server

sau đó kết nối thiết bị của bạn, bật Gỡ lỗi và nhập

adb devices
List of devices attached 
44b194f5    device

Cuối cùng đã có thể chạy trên thiết bị


7

Trong trường hợp của tôi, ứng dụng của tôi sử dụng một số thư viện gốc. Mỗi nền tảng yêu cầu các lib tương ứng được xây dựng.

Vì vậy, lib gốc của nền tảng x86 (hoặc bất kỳ nền tảng nào khác) không được tạo. Bạn phải thêm abifilter ở đâu đó:

Có một số nơi có thể chỉ định bộ lọc abi:

  • Application.mk thêm nền tảng bạn cần như sau:

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

    tìm abiFilters và thêm nền tảng bạn cần như sau:

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


6

Thiết bị hỗ trợ x86, nhưng APK chỉ hỗ trợ armeabi-v7a)

Có vẻ như bạn đã sử dụng một x86hình ảnh trong trình giả lập.

Tạo một cái riêng biệt. Chọn tab "hình ảnh khác" để tìm thiết bị cánh tay, nếu bạn phải.

Hoặc, chạy trên một thiết bị thực tế. Tôi nghĩ repo bạn đã liệt kê là để chạy trên Raspberry Pi 3 / ODroid.


6

Có thể xác nhận, tắt / bật gỡ lỗi USB trong Tùy chọn nhà phát triển đã giải quyết được sự cố. Thậm chí có thể hủy cửa sổ "Chọn mục tiêu triển khai" trong Android Studio và thử chạy lại ứng dụng sau khi bật gỡ lỗi USB.


5

Đối với tôi, việc thay đổi tùy chọn cáp từ

-> Charge Only. 

Đến

-> Transfer file.

4

Chỉ cần vào thiết bị Settings >> Developer Options >> Restore Default Settingsrồi bậtUSB debugging


3

Đoạn mã dưới đây phù hợp với tôi:

ndk {
     abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86'
}

2

Trên thiết bị vật lý của mình, tôi bắt đầu nhận được điều này. Cách khắc phục là vào Cài đặt dành cho nhà phát triển và tắt và bật gỡ lỗi USB.


2

Nếu bạn sử dụng Ubuntu:

  1. đảm bảo rằng gỡ lỗi usb đang BẬT
  2. kiểm tra kết nối cáp của bạn
  3. trên thanh thông báo, hãy kiểm tra thông báo hệ thống Android và chạm vào nó để thay đổi trạng thái sạc để chuyển tệp
  4. bây giờ hãy vào terminal và nhập: adb devices sau khi chạy lệnh này adb khởi động lại và thiết bị của bạn hiển thị trong danh sách

1

adb kill-server

máy chủ khởi động adb

Nó làm việc cho tôi trên hệ điều hành windows.


0

Kiểm tra mã của bạn trên điện thoại thực. Nếu bạn vẫn gặp sự cố tương tự, hãy nhập lại mã của bạn và trước khi thực hiện điều này, bạn nên cập nhật SDK và tạo trình mô phỏng mới với hình ảnh hệ thống ARM.


0

Nhiều khi điều này có nghĩa là bạn chưa cấp quyền truy cập máy tính xách tay / máy tính vào thiết bị của mình. Hãy xem thiết bị của bạn và nhấp vào nút "Cho phép truy cập" cũng như các quyền gỡ lỗi.


0

Chạy AVD bằng bộ xử lý x86 nhanh hơn 10 lần so với sử dụng trình giả lập ARM, nhưng hầu hết thời gian bạn chỉ đang biên dịch APK của mình cho ARM. Để chạy mô phỏng nhanh hơn bằng cách sử dụng AVD x86, tôi phải làm như sau (đối với dự án 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

Vấn đề khởi động lại thiết bị đã giải quyết cho tôi (React-native)


0

Điều đó đã xảy ra với tôi sau khi cập nhật Android Studio. Trong trường hợp của tôi, điều đó xảy ra do cài đặt bản dựng không được tự động định cấu hình thành x86Debug-x86. Chỉ cần thay đổi nó bằng cách mở Build >> Chọn Build Variant >> Thay đổi tùy chọn phiên bản build từ armeabi-v7a thành x86Debug-x86 hoặc bất cứ thứ gì bạn cần trong trình giả lập.


0

Thử bật Nguồn không xác định từ Tùy chọn bảo mật. Nó đã làm việc cho tôi.


0

tôi thấy điều này

Nếu bạn đang sử dụng CMake cho các bản dựng của mình, hãy kiểm tra tệp \ proj.android \ gradle.properties và cập nhật PROP_APP_ABI để bao gồm các bản dựng cho x86 hoặc cách khác, bạn chỉ có thể sử dụng Android armeabi-v7a hoặc arm64-v8a hình ảnh.

Ví dụ: PROP_APP_ABI = armeabi-v7a: arm64-v8a: x86

Nếu bạn không sử dụng cmake, hãy tìm trong \ proj.android \ app \ jni \ Application.mk trong trường hợp bạn cần thay đổi cài đặt ABI trong đó.


Chào mừng bạn đến với StackOverflow, hãy thêm một số mô tả và mã khác nếu cần thiết để hiểu câu trả lời vì nó sẽ giải quyết vấn đề của ai đó càng sớm càng tốt.
Nensi Kasundra
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.