替换iOS .ipa文件的数据容器

时间:2015-08-21 00:21:18

标签: ios objective-c swift ios8

我有一个应用程序,可以在成功登录后从100多个API中下载大量数据。我成功下载了数据,然后使用iExplorer从完全加载的应用程序中提取数据容器文件夹(Documents,Library和Tmp)。

我想以.ipa格式获取原始应用程序的空白版本,并将这些数据容器文件夹插入到完全加载的.ipa文件中。然后我将能够使用这个新的满载.ipa,并使用部署软件将其部署到一堆本地用户的设备。所以每个人都有这个满载的应用程序。

拜托,有没有人这样做过?请提供一些反馈,不要与我的方法论争论,因为这是由于需求而这样做的。也许有一个我缺少的一步?我不确定。

1 个答案:

答案 0 :(得分:1)

使用源代码,您可以在模拟器中运行应用程序(不需要iExplorer),等待它下载所有文件并浏览到安装该应用程序的计算机上的文件夹。

从那里你可以放下你想要的任何文件以及它们各自的文件夹。如果你正在使用Coredata,那里应该有一个SQLITE数据库文件(通常在你的Application Support文件夹中),这可能就是你所需要的,但是如果不查看你的实现细节就很难说。

如果您需要预留文件,请通过Xcode将它们添加到应用程序包中并创建代码以检查文件是否已存在(在这种情况下您不想替换它们),如果不是捆绑包中所需的所有文件到各自的文件夹中。

这里有一些半伪代码:

NSDictionary *userPrefs = [[NSUserDefaults standardUserDefaults] objectForKey:self.email];
if (![userPrefs[kInitialSetupCompleted] boolValue])
  NSFileManager *fileManager = [NSFileManager defaultManager];
  NSURL *destinationFilePath = ...
  NSURL *seedFilePath = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:kCoreDataStoreName ofType:nil]];    
  NSError* err = nil;
  if (![fileManager copyItemAtURL:seedPath toURL:destinationFilePath error:&err]) {
    NSLog(@"Could not copy seed data. error: %@", err);
    // Deal with error
  } else {
    // Set user defaults kInitialSetupCompleted to YES
  }
}