警告:
目前尚不清楚是否能够支持 iOS 17。更多详情请点击这里。
不支持 iOS 测试版。
注意:
如果您使用 iOS 16 或更高版本,需要先启用开发者模式。当您首次尝试将设备与 LocationSimulator 配合使用时,收到必须启用开发者模式的警告后,开发者模式选项应该会在设置中出现。您可以阅读以下问题获取更多信息。
LocationSimulator
LocationSimulator 是一款 macOS 应用程序(适用于 10.15.x 及更高版本),可用于模拟 iOS 设备或 iPhone 模拟器的位置。该项目的目标受众是希望测试基于位置服务的应用程序的开发人员。我不鼓励使用此应用程序在 iOS 游戏中作弊,也不为这些游戏提供支持。如果您将此应用程序用于预期用途之外的目的,后果自负。
背景
虽然我最初计划在 Watanabe Toshinori 的出色作品 LocationSimulator 基础上进行开发,但由于该项目(当时是 2019 年 8 月 18 日)缺少许可证,我决定重新创建并更改整个项目。我创建了所有必要的图像和源代码文件,并删除了除 libimobiledevice 之外的所有依赖项。甚至不再需要 Xcode。您只需要 iOS 版本对应的 DeveloperDiskImage.dmg
和 DeveloperDiskImage.dmg.signature
文件。
功能
- 无需越狱或在设备上安装应用程序即可模拟 iOS 设备位置。
- 模拟 iPhone 模拟器设备位置。
- 自动尝试下载适用于您的 iOS 版本的 DeveloperDiskImage 文件。
- 通过在地图上长按设置设备位置。
- 支持自定义和预设(步行/骑行/驾驶)移动速度。
- 使用方向键控制移动。
- 从当前位置导航到新位置。
- 支持网络设备。
- 搜索位置。
- 支持深色模式。
注意:
LocationSimulator 将尝试从 GitHub 下载与您的 iOS 版本相对应的DeveloperDiskImage.dmg
和DeveloperDiskImage.dmg.signature
文件,因为我无法合法分发这些文件。如果下载不成功,请通过安装 Xcode 获取这些文件,并将它们复制或链接到:~/Library/Application Support/LocationSimulator/{您的平台}/{主要iOS版本号}.{次要iOS版本号}/
您的平台
可能是iPhone OS
(iPhone 和 iPad)、Watch OS
(Apple Watch)或Tv OS
(Apple TV)。对于运行 iOS 14.3 的设备,主要iOS版本号
可能是14
,次要iOS版本号
可能是3
。从 v0.1.8 版本开始,此文件夹已移至:
~/Library/Containers/com.schlaubi.LocationSimulator/Data/Library/Application Support/LocationSimulator/
从 v0.1.9 版本开始,您可以使用
DeveloperDisk
偏好设置选项卡管理这些文件。
安装
从 GitHub 下载最新的发布版本以获取最新更改,或者
-
在终端中输入以下命令安装 homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
-
使用 homebrew 安装 LocationSimulator:
brew install locationsimulator
构建
由于这个项目随时间推移变得相当庞大,我将一些代码导出到其他包中。以下列表包含了我为实现这个项目而创建的所有额外项目。它们应该都能被 Swift 自动下载:
- LocationSimulator-Localization:LocationSimulator 的本地化文件。
- LocationSimulator-Help:当您点击
帮助
->LocationSimulator 帮助
时看到的 LocationSimulator 帮助手册。 - LocationSpoofer:用于模拟 iOS 或 iPhoneSimulator 设备位置的后端代码。
- XCF:LocationSpoofer 使用的底层框架。
- CLogger:LocationSpoofer 和 LocationSimulator 使用的 C / Objective-C / Swift 日志库。
- SuggestionPopup:为 AppKit 编写的简单类似 Apple 地图的弹出列表 UI,用于搜索位置。
- Downloader:一个简单的 Swift 库,用于更轻松地从互联网下载文件。
- GPXParser:一个简单的 Swift 库,用于解析 GPX 文件。
要求
- macOS 10.15+
- macOS 11.x+ SDK
- swift 5.0+
- swift-tools-version 5.2+
- jekyll(并将 jekyll 软链接到
/usr/local/bin/jekyll
)
构建应用
-
从 Apple 安装最新的 Xcode 开发者工具。(使用 App Store 是最简单的方法)
-
克隆此仓库:
git clone --recurse-submodules https://github.com/Schlaubischlump/LocationSimulator
-
在 Xcode 中打开
LocationSimulator.xcodeproj
。 -
让 Xcode 解析所有依赖项。
-
点击
运行
以构建和执行应用。
使用方法
允许网络设备(可选):
1. 确保您可以通过 Wi-Fi 同步设备并在访达中访问它。
使用 Wi-Fi 同步您的内容
在使用 USB 设置与访达同步后,您可以设置访达通过 Wi-Fi 而不是 USB 与您的设备同步。
使用 USB 线将设备连接到计算机,然后打开访达窗口并选择您的设备。
选择"在 Wi-Fi 网络上显示此[设备]"。
点击应用。
当计算机和设备在同一 Wi-Fi 网络上时,设备会出现在访达中。只要设备接通电源,就会自动同步。
2. 确保在"LocationSimulator" -> "偏好设置..." -> "网络" -> "允许网络设备"选项已启用
开始模拟位置:
- 通过USB或Wi-Fi将iOS设备连接到您的计算机。
- 在侧边栏中选择设备。
- 在地图上长按您想设置为当前位置的点。
移动:
- 点击地图左下角的步行按钮。拖动蓝色三角形来改变移动方向。
- 长按步行按钮启用自动移动。再次点击以禁用自动移动。
- 在模拟位置时,长按地图上的新位置可显示导航提示,或选择菜单项手动设置坐标。
- 使用左右方向键改变移动方向。使用上下方向键移动。按空格键停止导航。
停止模拟位置:
- 点击重置按钮。
许可证
除特定子目录另有说明外,整个项目均采用GNU通用公共许可证第3版授权。
贡献
由于我在业余时间维护这个项目,我一直很感谢得到的任何帮助。即使您不是程序员,对编码一无所知,您仍然可以提供帮助。如果能有更多语言版本就太好了。如果您懂其他语言并愿意花时间帮助翻译,请在这里告诉我!您可以在这里找到现有的本地化文件。我希望这个软件尽可能稳定,如果您发现任何错误,请通过开启新的问题报告。如果您是程序员,欢迎贡献错误修复或新功能。在提交拉取请求之前,最好先对您的代码运行swift-lint。
当您在这里时,不妨给个Github星标。这会让我保持动力。
捐赠
欢迎捐赠!我将用这些钱在业余时间进一步开发软件,并资助Apple开发者会员资格以对应用进行公证。您可以在应用程序内或通过github页面使用赞助按钮进行捐赠。选择帮助 -> 捐赠...
或LocationSimulator -> 偏好设置 -> 信息 -> 捐赠
在应用内捐赠。我将随时添加更多捐赠选项。目前您可以使用PayPal或以太坊。
1. 目标:Apple开发者许可证(定期)
每年,每个Apple开发者都需要向Apple支付费用,以便签署其应用程序并获取某些开发者资源的访问权限。如果您的应用程序未签名,用户将看到许多关于程序可能有恶意的警告,并且用户可能需要授予特殊权限才能启动应用程序。
2. 目标:Parallels Desktop 18
为了验证LocationSimulator在较旧的MacOS版本上是否正常工作,我需要能够运行所有这些版本。由于我只有一台MacBook,我使用Parallels Desktop在一台Mac上同时运行多个较旧版本的MacOS。
3. 目标:Hopper反汇编器(当前)
Hopper是一款适用于macOS和Linux的反汇编器。当程序的源代码不是开源的,但你仍然想弄清楚程序是如何工作的时候,就需要对程序进行反汇编。我经常需要使用反汇编器来逆向工程苹果的源代码,例如当他们改变了与iOS模拟器交互的API时。目前我在使用Hopper的免费版本。也就是说,每30分钟我都需要重启Hopper并重新加载所有内容。商业版本则没有这个限制。
改进建议
查看项目
标签页以了解下一版本计划的功能列表。
致谢
特别感谢@bailaowai和他的儿子提供的西班牙语和中文翻译。感谢@Rithari提供的意大利语翻译,@devmaximilian持续为瑞典语翻译做出贡献,@Black-Dragon-Spirit提供的荷兰语翻译,以及@Chuck3CZ提供的捷克语翻译。特别感谢@bslatyer的调试支持和在新问题出现时的快速响应!