Cordova:特定のiOSエミュレータイメージを起動する



Answers

と次のものを使用できます。

cordova emulate ios --target="iPhone-4s"

この場合、コードバ(またはPhoneGapまたは他の)プロジェクトは、iOSバージョン7.0.3のiPhone 4sシミュレータで起動されます。

同じシミュレータ上でプロジェクトを起動したいが、他のバージョンのiOS(7.1または8.0、あなたのシステムにバージョンが存在する場合)を使用したいのですか?

cobberboy 、あなたはcobberboyと言うようにすることができます:

特定のエミュレータを起動し、ios-simを直接使用してiosのバージョンを選択してください。

しかし、cordovaのrunコマンドの - ターゲットオプションを改善することができます。

まず、ご使用のシステムで使用可能なiOSバージョンを確認する必要があります。

それはcobberboy答えを使用してcobberboy :

$ ios-sim showdevicetypes

次に、ファイルyour_project_dir/platforms/ios/cordova/lib/run.js 、以下のようなコード行を見つける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使用するにはiPhone-4s, 7.1 (または他のもの)を単純にarray 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"が有効です。

deployToSimrun.js関数:

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.1ios-sim有効な引数com.apple.CoreSimulator.SimDeviceType.iPhone-4s, 7.1に変換します。

Question

私は開発段階で主にiOSに焦点を当て、Cordovaを使用してクロスプラットフォームのモバイルアプリを開発しています。

私の開発プロセスでは、コマンドラインから直接Cordovaアプリケーションを起動して、指定したエミュレータにロードすることができれば理想的です。 私は、プロジェクトのルートディレクトリから次のコマンドを実行することでこれを行うことができます:

$cordova run --debug --emulator iOS

これは正常に動作し、iOS 7.0.3のシミュレーションされたiPhone 4 RetinaでiOSシミュレータが実行されます

このシミュレートされたデバイスの他に、私はiPadなどでもテストしたいと思います。 これらのエミュレーションイメージがインストールされているので、Xcodeで手動で起動することができます。 また、コマンドlist-emulator-imagesproject_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のさまざまなエミュレータ/シミュレータでアプリを実行するとうまく動作します。




私は低い評判のために上記の答えにコメントすることはできませんが、ターゲットのリストは以下から入手できます:

start-emulator 

your platform/ios/cordova/lib/

言いましたが、私はipad網膜エミュレータを動作させることができません...




Xcode 8.3.2現在...

古いスレッド、私は知っていますが、おそらく、答えが少し変わったようです。 このスレッドの以前の記事のヒントは<cordova-project>/platforms/ios/cordova/lib/run.jsましたが、コードに含まれているドキュメント、 <cordova-project>/platforms/ios/cordova/lib/run.js

使用可能なエミュレータイメージを表示するには、. ./platforms/ios/cordova/lib/list-emulator-images list ./platforms/ios/cordova/lib/list-emulator-imagesを実行します。 希望のエミュレータでコードバコールを実行するときに、最後にバージョン番号を含めないでください。

cordova run ios --emulator --target="iPad-Air"

続きを見る




Links