【发布时间】:2013-02-21 22:02:51
【问题描述】:
Xcode (4.6) 有没有办法在安装之前删除设备上的应用程序?
我需要它来进行测试,如果在重新安装之前将应用程序从设备中删除会更容易。
【问题讨论】:
Xcode (4.6) 有没有办法在安装之前删除设备上的应用程序?
我需要它来进行测试,如果在重新安装之前将应用程序从设备中删除会更容易。
【问题讨论】:
是的,你可以。
获取https://github.com/libimobiledevice/ideviceinstaller
这使您能够在 bash 环境中使用ideviceinstaller --uninstall <app-id>。
然后在你的构建配置中在xcode中做一个脚本,比如:http://www.runscriptbuildphase.com/
【讨论】:
--uninstall 命令时,碰巧遇到错误:“无法连接到lockdownd。退出。”,然后访问:github.com/libimobiledevice/ideviceinstaller/issues/58
ideviceinstaller:brew install ideviceinstaller
唯一的方法是手动删除它。如果这是您所要求的,则无法让 xcode 在每次运行之前从设备中删除该应用程序。抱歉,这将是一个很棒的功能,但目前还没有办法做到这一点。甚至在模拟器上也没有。
我认为你应该向苹果提交错误/功能请求!该功能对我来说会派上用场!
【讨论】:
XCode 不提供每次运行时自动从设备中删除应用程序的选项,但简单的方法是使用“设备”屏幕一键将其删除。
【讨论】:
Window -> Devices and Simulators。选择设备。在INSTALLED APPS 下选择- 按钮。`
如何创建一个 Xcode 构建脚本来退出模拟器,然后删除模拟器应用程序目录的内容。目录是
~/Library/Application Support/iPhone Simulator/6.1/Applications/
【讨论】:
不,没有办法自动删除应用程序。
但是您可以编写一个简单的函数来清除上次运行的所有应用程序资源,如下所示:
-(无效)清理{ NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier]; [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain]; [MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *context) { [[NSManagedObjectModel MR_defaultManagedObjectModel].entities enumerateObjectsUsingBlock:^(NSEntityDescription *entityDescription, NSUInteger idx, BOOL *stop) { [NSClassFromString([entityDescription managedObjectClassName]) MR_truncateAllInContext:context]; }]; }]; }【讨论】:
[MagicalRecord setupCoreDataStack] 行之后的 AppDelegate 中调用此方法。但请注意,您必须手动清理您的应用可能写入某处的所有数据。
像 HackyStack 一样,我认为你必须手动删除应用程序。也就是说,您可以使用调试启动方法来清除安装期间未覆盖的内容。例如,删除文档目录的内容、与应用程序关联的钥匙串项目、iCloud KV 信息和文档等的方法。这会有点痛苦,但可能会让你去你想去的地方......
【讨论】:
2021 年更新(macOS 11.2.3、Xcode12.4):我必须将mobiledevice uninstall_app com.example.bundleid 添加到构建阶段
使用 macOS 10.15.2、Xcode11.3、iOS13.3 (iPhone XS)、iOS12.4.4 (iPhone 5S) 的工作解决方案
brew install mobiledevice (https://github.com/imkira/mobiledevice)mobiledevice uninstall_app com.example.bundleid
【讨论】: