当前位置: 首页 > 知识库问答 >
问题:

Cordova:启动特定的iOS仿真器映像

松正阳
2023-03-14

我正在使用Cordova开发一个跨平台的移动应用程序,主要集中在开发阶段的iOS上。

对于我的开发过程,如果我可以直接从命令行启动Cordova应用程序并将其加载到指定的模拟器中,那将是一个理想的选择。我可以通过从项目根目录运行以下命令来完成此操作:

$cordova run --debug --emulator iOS

这工作正常,并导致一个iOS模拟器运行我的应用程序在模拟iPhone 4 Retina与iOS7.0.3

除了这个模拟设备,我还想在(例如)iPad上测试。我安装了这些仿真图像,我可以在Xcode中手动启动我的应用程序。此外,命令list-emulator-Image(位于project_dir/平台/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英寸)仿真图像)。cordova help的相关输出给出了以下信息:

run [--debug|--release]
    [--device|--emulator|--target=FOO]
    [PLATFORM] ............................ deploys app on specified platform devices / emulators

我尝试过以下方法

cordova run--debug--emulator=iPad iOS

和许多变体,但没有运气。每次都在同一个模拟器中启动。

命令行工具的文档中没有提供这方面的任何信息,而且大量的谷歌搜索也没有找到任何信息。我错过了一些琐碎的事情吗?还是我想做些奇怪的事?我真的希望这里有人有这方面的经验,并能提供一些答案。

非常感谢!

编辑:忘记明确提及;我在Mac电脑上做这一切。如前所述,在Xcode中的不同模拟器/模拟器中运行应用程序效果良好。

共有3个答案

杜经艺
2023-03-14

您可以直接使用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"

查看正在运行的进程,我看到(在一行上):

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
阎慈
2023-03-14
匿名用户

如csantanapr所述,您可以使用:

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

但是,在这种情况下,cordova(或PhoneGap或其他)项目将在iOS 7.0版的iPhone4S模拟器上启动。3.

如果你想启动项目在同一模拟器,但与其他版本iOS(7.1或8.0,如果它的版本存在于您的系统)?

对于科塞,你可以说科伯比:

直接使用ios-sim启动特定的模拟器并选择您的ios版本。

但您可以改进cordovarun命令的--target选项。

首先,您必须确保系统上可用iOS目标版本。

为此,请使用cobberboy的答案:

$ ios-sim showdevicetypes

然后您需要打开文件您的项目\u 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”将有效。

和函数部署ToSimrun.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.1转换为有效参数com。苹果核心模拟器。SimDeviceType。适用于ios sim卡的iPhone-4s,7.1

章绪
2023-03-14

要了解可用的模拟器图像,您可以使用这些图像列出它们

$ 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"

重要提示在启动不同的目标模拟器之前退出模拟器(在菜单栏上选择模拟器-

考虑到您可能需要通过菜单退出iOS模拟器以从3.5英寸iPhone切换到4英寸iPhone。

动态列表可在平台/ios/cordova/lib/list-emulator-Image中找到

 类似资料:
  • 无法在仿真程序中启动AVD。 输出: 模拟器:警告:将VM堆大小设置为低于硬件指定的最小值128MB模拟器:警告:将VM堆大小设置为128MB qemu-system-i386.exe:-drive if=none,index=1,id=cache,file=c:\users\haris.android\avd\nexus_5_api_19.avd/cache.img:无法打开磁盘映像c:\use

  • 在我删除了一些旧的AVD并创建了一个新的之后,我无法启动任何AVD。如果我通过Android-Studio启动它们,AVD窗口会启动,但屏幕会一直黑屏,Android-Studio会停止响应。如果我使用以下命令通过命令行启动AVD: 行为是相同的,我在控制台中得到以下输出: 线。 我运行的是装有MacOS Big Sur Dev Beta的2017 MacBook Pro,但在删除旧AVDs之前,

  • 问题内容: Jenkins无法运行android模拟器。 然后,我尝试与jenkins一样运行模拟器。问题是android模拟器没有开始监听端口。首先,我以“用户”用户成功创建并启动了模拟器,如下所示: 因此,“用户”用户一切正常,但对于“詹金斯”用户,我有问题 就是这样!不管我等待了​​多少时间,“仿真器:在端口5554上监听控制台连接”这一行都不到了! 顺便说一句,kvm对两个用户都运行良好

  • 3.3.仿真器 在仿真器(Emulator)上执行程序,与在真机上执行的效果是一样的。这是因为仿真器是机器码级别的仿真,其机器码与真机相同。 Tip: 模拟器(Simulator)与仿真器(Emulator)名字很像,但有着本质的不同。“仿真器”的意思是模仿真机执行机器码的过程,接近于“虚拟机”。而“模拟器”是在相对较高的层次上模拟代码的行为。Android SDK附带了一个基于QEMU的仿真器。

  • translated_page: https://github.com/PX4/Devguide/blob/master/en/simulation/airsim.md translated_sha: RETRANSLATE AirSim仿真 AirSim是一个基于虚幻引擎(Unreal Engine)的开源、跨平台无人机模拟器。它可以使用硬件在环(HITL)或软件在环(SITL)的方式为Pixh