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?
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?
Câu trả lời:
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 .
Tắt gỡ lỗi USB và bật lại trên thiết bị phần cứng.
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.
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)
Camera (PTP)sang Media Device (MTP)và nó cũng hoạt động. Cảm ơn bạn!
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!!!
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
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ị
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"
Bạn cần kết nối lại thiết bị của mình và thử tắt / bật các tùy chọn của nhà phát triển.
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.
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.
Đối với tôi, việc thay đổi tùy chọn cáp từ
-> Charge Only.
Đến
-> Transfer file.
Chỉ cần vào thiết bị Settings >> Developer Options >> Restore Default Settingsrồi bậtUSB debugging
Đoạn mã dưới đây phù hợp với tôi:
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86'
}
Nếu bạn sử dụng Ubuntu:
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.
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})
}
}
}
Vấn đề khởi động lại thiết bị đã giải quyết cho tôi (React-native)
Đ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.
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.
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 đó.