Tworzę wieloplatformową aplikację mobilną przy użyciu Cordova, koncentrując się głównie na iOS w fazie rozwoju.
Dla mojego procesu programowania byłoby idealnie, gdybym mógł uruchomić moją aplikację Cordova bezpośrednio z wiersza poleceń i załadować ją do określonego emulatora. Mogę to zrobić, uruchamiając następujące polecenie z katalogu głównego projektu:
$cordova run --debug --emulator iOS
Działa to dobrze i powoduje, że symulator iOS uruchamia moją aplikację na symulowanym telefonie iPhone 4 Retina z iOS 7.0.3
Oprócz tego symulowanego urządzenia chciałbym również przetestować (na przykład) iPada. Mam zainstalowane te obrazy emulacji i mogę ręcznie uruchomić w nich moją aplikację w Xcode. Ponadto polecenie list-emulator-images
(znajdujące się w project_dir/platforms/ios/cordova/lib
) daje następujący wynik:
"iPhone Retina (3.5-inch)"
"iPhone Retina (4-inch)"
"iPhone Retina (4-inch 64-bit)"
"iPhone"
"iPad"
"iPad Retina"
Chodzi jednak o to, że nie mogę dowiedzieć się, jak uruchomić emulator w niczym innym niż domyślnym (który wydaje się być iPhone Retina (4-inch)
obrazem emulacji). Odpowiednie dane wyjściowe programu cordova help
zawierają następujące informacje:
run [--debug|--release]
[--device|--emulator|--target=FOO]
[PLATFORM] ............................ deploys app on specified platform devices / emulators
Próbowałem następujących rzeczy:
cordova run --debug --emulator=iPad iOS
I wiele odmian, ale bez powodzenia. Za każdym razem uruchamia się w tym samym emulatorze.
Dokumentacja narzędzia wiersza poleceń nie zawiera żadnych informacji w tym zakresie, a obszerna wyszukiwarka Google również niczego nie znalazła. Czy brakuje mi czegoś trywialnego? A może próbuję zrobić coś dziwnego? Naprawdę mam nadzieję, że ktoś tutaj ma z tym doświadczenie i może udzielić kilku odpowiedzi.
Z góry bardzo dziękuję!
edycja: zapomniałem wyraźnie wspomnieć; Robię to wszystko na Macu. Jak wspomniano wcześniej, uruchomienie aplikacji w różnych emulatorach / symulatorach w Xcode działa dobrze.
"Error: Cannot read property 'name' of undefined"
podczas określania celu za pomocą cudzysłowów, mogłem go tylko uruchomić, uruchamiając go w ten sposóbcordova run ios --target=iPhone-6
. Mam nadzieję, że zaoszczędzi to komuś kłopotów!Jak mówi csantanapr , możesz użyć:
ale w tym przypadku projekt cordova (lub PhoneGap lub inny) zostanie uruchomiony na symulatorze iPhone'a 4s z iOS w wersji 7.0.3 .
Jeśli chcesz uruchomić projekt na tym samym symulatorze, ale z inną wersją iOS (7.1 lub 8.0, jeśli istnieją wersje w Twoim systemie)?
Oczywiście, możesz zrobić jak powiedz cobberboy :
Ale możesz ulepszyć
--target
opcjęrun
polecenia cordova .Najpierw musisz upewnić się, jaka docelowa wersja iOS jest dostępna w twoim systemie.
Do tego użyj odpowiedzi cobberboya :
Następnie musisz otworzyć plik
your_project_dir/platforms/ios/cordova/lib/run.js
i znaleźć linie kodu, jak poniżej:Do użytku
iPhone-4s, 7.1
(lub innego) po prostu dodaj go do tablicyvalidTargets
.I w
twoja
--target="iPhone-4s, 7.1"
wola będzie ważna.I funkcja
deployToSim
zrun.js
:przekonwertować
iPhone-4s, 7.1
na prawidłowy argumentcom.apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1
dlaios-sim
.źródło
ionic run ios --target='iPhone-6, 9.0'
podczas korzystania z Ionic Framework.validTargets
i mogłem określić pełną platformę, np"--target="iPhone-6, 8.4""
. : . Byłoby naprawdę miło, gdyby Cordova przekazała walidację celuios-sim
.TL; DR
Możesz uruchomić określony emulator i wybrać swoją wersję ios bezpośrednio za pomocą ios-sim.
Detale
Kiedy to uruchomiłem:
i spojrzałem na uruchomione procesy, zobaczyłem to (w jednym wierszu):
Badając głębiej ios-sim , wygląda na to, że istnieje kilka bardziej szczegółowych opcji, w szczególności:
Zrobiłem więc zgodnie z sugestią i uruchomiłem ios-sim z argumentem „showdevicetypes” i otrzymałem to:
źródło
Nie podawaj numeru wersji
źródło
Od Xcode 8.3.2 ...
Wiem, stary wątek, ale wydaje się, że być może odpowiedź nieco się zmieniła. Pomogły wskazówki z wcześniejszych postów w tym wątku, ale też przeczytanie dokumentacji zawartej w kodzie,
<cordova-project>/platforms/ios/cordova/lib/run.js
Wykonaj,
./platforms/ios/cordova/lib/list-emulator-images
aby wyświetlić listę dostępnych obrazów emulatora. Nie podawaj numeru wersji na końcu, gdy wywołujesz Cordova, aby działał w wybranym emulatorze.Zobacz więcej
źródło
cordova run ios --target=iPhone-6
Nie mogę skomentować powyższej odpowiedzi ze względu na moją niską reputację, ale lista celów dostępna jest pod adresem:
pod
Powiedziawszy to, nie mogę uruchomić emulatora siatkówki iPada ...
źródło
najszybsze wyjście listy urządzeń:
$ instruments -s devices
Po prostu użyj nazwy urządzenia bez wersji.
źródło
Uruchamia symulator iOS z żądaniem sieciowym w oparciu o już wygenerowaną kompilację dla aplikacji Cordova. Wykonaj to żądanie z przeglądarki otwiera symulator na komputerze Mac z wersją iPhone 8Plus: http: // nazwa hosta: 3000 / cordova / build / [xxxx-buildnumber] / emulate? Target = iPhone-8-Plus
źródło
Inny symulator iPhone'a i iPada
cordova run ios --list
cordova emuluje ios - docelowy „iPhone-7”
źródło
Odpowiedź @ Birja działa teraz, ale polecenie uruchomienia, którego użył, w końcu jest nadal błędne, więc oto prawidłowa odpowiedź:
Lista wszystkich urządzeń dostępnych w symulatorze
cordova run ios --list
Rezultatem będzie coś takiego:
cordova run ios --target "iPad-Pro, 12.2"
Użyj dowolnego celu z powyższego. Aby uruchomić w symulatorze.źródło