Cordovaを使用して、主に開発段階のiOSに焦点を当てたクロスプラットフォームモバイルアプリを開発しています。
私の開発プロセスでは、コマンドラインからCordovaアプリを直接起動し、指定されたエミュレーターに読み込むことができれば理想的です。これを行うには、プロジェクトのルートディレクトリから次のコマンドを実行します。
$cordova run --debug --emulator iOS
これはうまく機能し、iOS 7.0.3を搭載したシミュレートされたiPhone 4 Retinaでアプリを実行するiOSシミュレーターになります。
このシミュレートされたデバイスに加えて、(たとえば)iPadでもテストしたいと思います。これらのエミュレーションイメージがインストールされており、Xcodeで手動でアプリを起動できます。また、コマンドlist-emulator-images
(project_dir/platforms/ios/cordova/lib
にあります)は次の出力を提供します。
"iPhone Retina (3.5-inch)"
"iPhone Retina (4-inch)"
"iPhone Retina (4-inch 64-bit)"
"iPhone"
"iPad"
"iPad Retina"
ただし、問題は、デフォルト(iPhone Retina (4-inch)
エミュレーションイメージのように見える)以外でエミュレータを起動する方法がわからないようです。 cordova help
の関連する出力は、次の情報を提供します。
run [--debug|--release]
[--device|--emulator|--target=FOO]
[PLATFORM] ............................ deploys app on specified platform devices / emulators
私は次のようなことを試しました:
cordova run --debug --emulator=iPad iOS
そして、その多くのバリエーションが、運はありません。同じエミュレータで起動するたびに。
ドキュメント コマンドラインツールの場合、この点に関する情報は提供されず、広範なGoogle検索でも何も見つかりませんでした。些細なことを見逃していますか?それとも変なことをしようとしていますか?ここの誰かがこれを経験していて、いくつかの答えを提供できることを本当に望んでいます。
事前に感謝します!
編集:明示的に言及するのを忘れました。これはすべてMacで行っています。前述したように、Xcodeのさまざまなエミュレーター/シミュレーターでアプリを実行すると問題なく動作します。
利用可能なシミュレーター画像を調べるには、それらをリストするために使用できます
$ cordova emulate ios --list
Available iOS Virtual Devices:
iPhone-4s, 9.3
iPhone-5, 9.3
iPhone-5s, 9.3
iPhone-6, 9.3
iPhone-6-Plus, 9.3
iPhone-6s, 9.3
iPhone-6s-Plus, 9.3
iPad-2, 9.3
iPad-Retina, 9.3
iPad-Air, 9.3
iPad-Air-2, 9.3
iPad-Pro, 9.3
次に、-targetパラメーターでシミュレーター名のいずれかを使用します。
cordova emulate ios --target="iPhone-4s, 9.3"
cordova emulate ios --target="iPad-Air-2, 9.3"
cordova emulate ios --target="iPhone-6s, 9.3"
cordova emulate ios --target="iPhone-6-Plus, 9.3"
重要別のターゲットシミュレーターを起動する前にシミュレーターを終了します(メニューバーでSimulator->Quit
を選択します)
3.5インチから4インチのiPhoneに切り替えるには、メニューからiOSシミュレーターを終了する必要がある場合があることを考慮してください。
動的リストはplatforms/ios/cordova/lib/list-emulator-images
で利用可能です
csantanapr のように使用できます:
cordova emulate ios --target="iPhone-4s"
ただし、この場合、cordova(またはPhoneGapなど)プロジェクトがiOSバージョン7.0.3を搭載したiPhone 4sシミュレーターで起動されます。
同じシミュレータでプロジェクトを起動したいが、他のバージョンのiOS(システムにバージョンが存在する場合は7.1または8.0)を使用したい場合は?
もちろん、 cobberboy :
特定のエミュレータを起動し、ios-simを直接使用してiOSバージョンを選択します。
ただし、cordova run
コマンドの--target
オプションを改善できます。
最初に、システムで使用可能なターゲットiOSバージョンを確認する必要があります。
cobberboy の回答を使用してください:
$ ios-sim showdevicetypes
次に、ファイルyour_project_dir/platforms/ios/cordova/lib/run.js
を開き、次のようなコード行を見つける必要があります。
// validate target device for ios-sim
// Valid values for "--target" (case sensitive):
var validTargets = ['iPhone-4s', 'iPhone-5', 'iPhone-5s', 'iPhone-6-Plus', 'iPhone-6',
'iPad-2', 'iPad-Retina', 'iPad-Air', 'Resizable-iPhone', 'Resizable-iPad'];
iPhone-4s, 7.1
(または他の何らかの)を使用するには、単純に配列validTargets
に追加します。
var validTargets = ['iPhone-4s', 'iPhone-4s, 7.1', 'iPhone-5', 'iPhone-5s', 'iPhone-6-Plus', 'iPhone-6',
'iPad-2', 'iPad-Retina', 'iPad-Air', 'Resizable-iPhone', 'Resizable-iPad'];
そして
cordova emulate ios --target="iPhone-4s, 7.1"
--target="iPhone-4s, 7.1"
が有効になります。
そして、run.js
の関数deployToSim
:
function deployToSim(appPath, target) {
// Select target device for emulator. Default is 'iPhone-6'
if (!target) {
target = 'iPhone-6';
console.log('No target specified for emulator. Deploying to ' + target + ' simulator');
}
var logPath = path.join(cordovaPath, 'console.log');
var simArgs = ['launch', appPath,
'--devicetypeid', 'com.Apple.CoreSimulator.SimDeviceType.' + target,
// We need to redirect simulator output here to use cordova/log command
// TODO: Is there any other way to get emulator's output to use in log command?
'--stderr', logPath, '--stdout', logPath,
'--exit'];
return spawn('ios-sim', simArgs);
}
iPhone-4s, 7.1
をcom.Apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1
の有効な引数ios-sim
に変換します。
特定のエミュレータを起動し、ios-simを直接使用してiOSバージョンを選択できます。
export appname="./platforms/ios/build/emulator/Hello World.app"
ios-sim launch "$appname" --devicetypeid "com.Apple.CoreSimulator.SimDeviceType.iPad-2, 8.0" --stderr ./platforms/ios/cordova/console.log --stdout ./platforms/ios/cordova/console.log
これを実行したとき:
cordova emulate ios --target="iPad"
実行中のプロセスを見ると、私はこれを見ました(1行で):
ios-sim launch ./platforms/ios/build/emulator/HelloWorld.app
--stderr ./platforms/ios/cordova/console.log
--stdout ./platforms/ios/cordova/console.log
--family ipad
--exit
ios-sim をさらに調査すると、さらに具体的なオプションがいくつかあるようです。特に:
--devicetypeid <device type> The id of the device type that should be simulated (Xcode6+). Use 'showdevicetypes' to list devices.
e.g "com.Apple.CoreSimulator.SimDeviceType.Resizable-iPhone6, 8.0"
だから私はそれが示唆したようにして、「showdevicetypes」引数でios-simを実行し、これを得ました:
$ ios-sim showdevicetypes
com.Apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1
com.Apple.CoreSimulator.SimDeviceType.iPhone-5, 7.1
com.Apple.CoreSimulator.SimDeviceType.iPhone-5s, 7.1
com.Apple.CoreSimulator.SimDeviceType.iPad-2, 7.1
com.Apple.CoreSimulator.SimDeviceType.iPad-Retina, 7.1
com.Apple.CoreSimulator.SimDeviceType.iPad-Air, 7.1
com.Apple.CoreSimulator.SimDeviceType.iPhone-4s, 8.0
com.Apple.CoreSimulator.SimDeviceType.iPhone-5, 8.0
com.Apple.CoreSimulator.SimDeviceType.iPhone-5s, 8.0
com.Apple.CoreSimulator.SimDeviceType.iPhone-6-Plus, 8.0
com.Apple.CoreSimulator.SimDeviceType.iPhone-6, 8.0
com.Apple.CoreSimulator.SimDeviceType.iPad-2, 8.0
com.Apple.CoreSimulator.SimDeviceType.iPad-Retina, 8.0
com.Apple.CoreSimulator.SimDeviceType.iPad-Air, 8.0
com.Apple.CoreSimulator.SimDeviceType.Resizable-iPhone, 8.0
com.Apple.CoreSimulator.SimDeviceType.Resizable-iPad, 8.0
バージョン番号を含めないでください
cordova run ios --target="iPhone-6s"
古いスレッド、私は知っていますが、おそらく、答えがわずかに変わったようです。このスレッドの以前の投稿からのヒントは役に立ちましたが、コードに含まれるドキュメント<cordova-project>/platforms/ios/cordova/lib/run.js
を読むことも助けました
./platforms/ios/cordova/lib/list-emulator-images
を実行して、使用可能なエミュレーターイメージをリストします。目的のエミュレーターで実行するためにCordova呼び出しを行う場合、最後にバージョン番号を含めないでください。
cordova run ios --emulator --target="iPad-Air"
デバイスリストの最速出力:$ instruments -s devices
バージョンなしでデバイス名を使用するだけです。
私の評判が低いため、上記の答えにコメントすることはできませんが、ターゲットのリストは以下から入手できます。
start-emulator
下
your platform/ios/cordova/lib/
とはいえ、iPad Retinaエミュレーターを動作させることはできません...
Cordovaアプリケーション用に既に生成されたビルドに基づいて、Web要求でiOSシミュレーターを実行します。ブラウザーからこのリクエストを実行すると、iPhone 8PlusバージョンのMacでシミュレーターが開きます。 http:// hostname:3000/cordova/build/[xxxx-buildnumber]/emulate?target = iPhone-8-Plus
@Birjaの答えはすぐに機能しますが、彼が最後に使用した実行コマンドはまだ間違っているので、ここで正しい答えを示します。
シミュレーターで使用可能なすべてのデバイスをリストするにはcordova run ios --list
次のような結果になります。
Available ios devices:
Available ios virtual devices:
Apple-TV-1080p, tvOS 12.2
Apple-Watch-Series-2-38mm, watchOS 5.2
iPhone-5s, 12.2
iPhone-6, 12.2
iPad-Air-2, 12.2
iPad--5th-generation-, 12.2
iPad-Pro--9-7-inch-, 12.2
iPad-Pro, 12.2
iPad-Pro--12-9-inch---2nd-generation-, 12.2
iPad-Pro--10-5-inch-, 12.2
iPad--6th-generation-, 12.2
iPad-Pro--11-inch-, 12.2
iPad-Pro--12-9-inch---3rd-generation-, 12.2
cordova run ios --target "iPad-Pro, 12.2"
上記のターゲットを使用します。シミュレーターで実行します。
異なるiPhoneおよびiPadシミュレーター
cordova run ios --list
cordovaエミュレートiOS-ターゲット「iPhone-7」