У меня есть приложение, которое падает при запуске в обзоре магазина приложений, но отлично работает на устройствах и на тренажерах. Вот особенности.App Crashes при запуске в обзоре App Store - отлично работает на устройствах
Приложение написано для IOS 7 и проходит тестирование на IOS 8.x. Я символизировал журналы сбоев от Apple, и он сбой при первой попытке доступа к информации, хранящейся в предварительно заполненном базовом блоке данных sqlite db.
Этот код делает дб копию при запуске:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (__persistentStoreCoordinator != nil)
{
return __persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"CC.sqlite"];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *storePath = [documentsDirectory stringByAppendingPathComponent: @"CC.sqlite"];
// Check if the sqlite store exists
if (![[NSFileManager defaultManager] fileExistsAtPath:storePath]) {
NSLog(@"sqlite db not found... copy into place");
// copy the sqlite files to the store location.
NSString *bundleStore = [[NSBundle mainBundle] pathForResource:@"CC" ofType:@"sqlite"];
[[NSFileManager defaultManager] copyItemAtPath:bundleStore toPath:storePath error:nil];
}
else {
NSLog(@"Already exists");
}
NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSDictionary *options = @{ NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"} };
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
{
NSLog(@"error %@, %@", error, [error userInfo]);
}
return __persistentStoreCoordinator;
}
Мы запускаясь пару сотен раз на различных устройствах ИСН (несколько различных людей) без проблем на всех, но неизменно получают стартап авария в Apple.
Из журнала сбоев видно, что приложение (во время просмотра магазина приложений) пытается получить доступ к несуществующему sqlite db через Core Data, но я не знаю, почему это происходит только в Apple, и почему я не могу воспроизвести ошибку. Я не уверен, какую дополнительную информацию можно добавить к вопросу, но при необходимости будет обновляться по мере необходимости.
Любые советы с благодарностью получил ....
Могли ли они делать тест, чтобы увидеть, как вы справляетесь база данных не существует? Возможно, это по дизайну. –
Возможно, но для приложения, которое полностью зависит от существования db ... кажется спорным. Я бы не знал, что делать в случае такого катастрофического сбоя в производственной среде .... – jmf1205
Вы проверили комплект, который отправляется в Apple, чтобы подтвердить, что база данных включена? – Paulw11