Bawię się Androidem Studio, testując niektóre projekty z GitHub i kiedy próbuję emulować apk, nie pozwala mi to wybrać emulatora.
Mówi mi:
Urządzenie obsługuje x86, ale APK obsługuje tylko armeabi-v7a
Dlaczego to robi?
Bawię się Androidem Studio, testując niektóre projekty z GitHub i kiedy próbuję emulować apk, nie pozwala mi to wybrać emulatora.
Mówi mi:
Urządzenie obsługuje x86, ale APK obsługuje tylko armeabi-v7a
Dlaczego to robi?
Odpowiedzi:
Miałem ten sam problem, pobrałem plik build.gradle z modułu: app . Okazuje się, że jest taka konfiguracja:
ndk {
abiFilters "armeabi-v7a", "x86"
}
kiedy skomentowałem wszystko, wszystko działało dobrze.
Próbowałem poradzić sobie z projektem React Native na Androida .
Wyłącz debugowanie USB i włącz je ponownie na urządzeniu.
Allow computer to connect to this device
monit nie został wyświetlony za pierwszym razem, ale za drugim razem.
W systemie Linux: Plik> Unieważnij pamięć podręczną / Uruchom ponownie W telefonie: Zamiast tego Naładuj to urządzenie zmień na Prześlij zdjęcia (PTP)
Camera (PTP)
na Media Device (MTP)
i to też działa. Dziękuję Ci!
Miałem podobny problem i rozwiązałem go, dodając wartość „x86” do listy „abiFilters”, jak poniżej -
[Otwórz build.gradle (moduł: app) file] i wyszukać " NdK " w deafultSection i dodać "x86" do niego!
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86"
}
Mam nadzieję, że to pomoże!!!
armeabi
jeśli celujesz w SDK 19 i nowsze. Sam Android go nie obsługuje od 4.4
W moim przypadku maszyna Linux adb devices
pokazała
List of devices attached
44b194f5 no permissions
Następnie zrestartowałem serwer adb
sudo adb kill-server
i wtedy
sudo adb start-server
następnie podłącz urządzenie, włącz debugowanie i wpisz
adb devices
List of devices attached
44b194f5 device
Wreszcie udało się uruchomić na urządzeniu
W moim przypadku moja aplikacja korzysta z niektórych bibliotek natywnych. Każda platforma wymaga zbudowania odpowiednich bibliotek.
Więc natywna biblioteka platformy x86 (lub jakiejkolwiek innej) nie jest generowana, musisz gdzieś dodać abifilter:
Istnieje kilka miejsc, w których można określić filtry abi:
Application.mk dodaj platformę, której potrzebujesz:
APP_ABI := armeabi armeabi-v7a x86
build.gradle
znajdź abiFilters i dodaj platformę, której potrzebujesz:
abiFilters "armeabi","armeabi-v7a","x86"
Musisz ponownie podłączyć urządzenie i spróbować wyłączyć / włączyć opcje programisty.
Urządzenie obsługuje x86, ale APK obsługuje tylko armeabi-v7a)
Wygląda na to, że użyłeś x86
obrazu w emulatorze.
Utwórz osobny. Wybierz zakładkę „inne obrazy”, aby znaleźć uzbrojenie, jeśli musisz.
Lub uruchom na rzeczywistym urządzeniu. Wydaje mi się, że wymienione repozytorium ma działać na Raspberry Pi 3 / ODroid.
Potwierdzenie, wyłączenie / włączenie debugowania USB w Opcjach programisty rozwiązało problem. Może nawet anuluj okno „Select Deployment Target” w Android Studio i spróbuj ponownie uruchomić aplikację po przełączeniu debugowania USB.
U mnie zadziałało przy zmianie opcji kabla z
-> Charge Only.
Do
-> Transfer file.
Po prostu przejdź do urządzenia, Settings >> Developer Options >> Restore Default Settings
a następnie włączUSB debugging
Poniższy kod zadziałał dla mnie:
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86'
}
Jeśli używasz Ubuntu:
adb kill-server
Serwer startowy adb
Działa dla mnie w systemie operacyjnym Windows.
Uruchamianie AVD przy użyciu procesora x86 jest 10 razy szybsze niż przy użyciu emulatora ARM, ale przez większość czasu kompilujesz tylko pakiet APK dla ARM. Aby uzyskać szybsze przebiegi emulacji przy użyciu AVD x86, musiałem wykonać następujące czynności (dla projektu 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})
}
}
}
Ponowne uruchomienie urządzenia rozwiązało problem dla mnie (natywne reagowanie)
Zdarzyło mi się to po aktualizacji Android Studio. W moim przypadku stało się tak, ponieważ ustawienie kompilacji nie jest automatycznie konfigurowane w x86Debug-x86. Po prostu zmień to, otwierając Build >> Select Build Variant >> Zmień opcję wariantu kompilacji z armeabi-v7a na x86Debug-x86 lub cokolwiek potrzebujesz w emulatorze.
Spróbuj włączyć nieznane źródła w opcjach bezpieczeństwa. U mnie to zadziałało.
widzę to
Jeśli używasz CMake do swoich kompilacji, sprawdź plik \ proj.android \ gradle.properties i zaktualizuj PROP_APP_ABI, aby uwzględnić kompilacje dla x86, lub alternatywnie możesz po prostu użyć armeabi-v7a lub arm64-v8a Android zdjęcia.
Przykład: PROP_APP_ABI = armeabi-v7a: arm64-v8a: x86
Jeśli nie używasz cmake, zajrzyj do \ proj.android \ app \ jni \ Application.mk na wypadek, gdybyś musiał zmienić tam ustawienie ABI.