【发布时间】:2015-08-14 14:04:40
【问题描述】:
我最近在
中将我的应用名称从 ABCXYZ 更改为 ABC-XYZinfo.plist -> Bundle Display Name
这会导致设备在启动时崩溃。这是唯一的消息:
DiskCookieStorage changing policy from 2 to 0, cookie file:
file:///private/var/mobile/Containers/Data/Application/7CB9B0EA-97A2-4D3E-A8AA-CEB419BEB1F2/Library/Cookies/Cookies.binarycookies
模拟器工作正常,只有真正的设备崩溃。这里有什么问题?更新appstore会崩溃吗?
编辑 1:在我更改应用名称之前,一切都运行良好。我会尝试改回名字,看看问题是否消失。
编辑 2:不,即使我改回名称后它也不起作用。我现在该怎么办?
编辑 3:我只更改应用程序的显示名称,而不是项目名称或其他任何内容。我的项目名称仍然是 ABCXYZ-iPad。我认为问题可能是因为我导入了太多的外部框架、sdk...并且它在某处引起了冲突?
编辑 4:这些是我迄今为止尝试过的所有解决方案。还没有结果。
0. Rename to its old name, reinstall.
1. Clean, build, reset xcode, clean, build.
2. Delete app on device, reinstall.
3. Re-download from store, reinstall.
4. Reset device, reinstall.
编辑 5:我刚刚发现我的应用程序通过了这行代码。
-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
NSLog(@"background fetch");
completionHandler(UIBackgroundFetchResultNewData);
}
然后写出上面的信息。不过不知道是什么意思。
编辑 6:找到导致崩溃的确切位置! 非常感谢 Nicholas Langley,这里打印的问题:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Stripe Payment
[Stripe setDefaultPublishableKey:StripePublishableKey];
// iZettle Payment
[[iZettleSDK shared] startWithAPIKey:@"THE_API_KEY"];
我更改了我的应用名称,导致它更改了捆绑包。调试后,它会在该行代码(startWithAPIKey)之后打印出消息,并在我尝试执行此操作时崩溃:
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
NSString *x = [[NSUserDefaults standardUserDefaults] objectForKey:@"X"];
[dic setObject:x forKey@"X"]; <<< HERE ERROR SETTING NIL. STRANGE because it doesn't print any message. Also, My app should store X already.
好像改了app的名字后,也改了bundle,导致数据丢失。现在真正的问题是:如何在更改应用程序的名称/捆绑包后使用新数据迁移旧数据。模拟器不会产生这个错误,我无法调试到设备的目录来检查任何东西。
编辑 7:突然解决!
更新应用后:
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
NSString *x = [[NSUserDefaults standardUserDefaults] objectForKey:@"X"];
if (x) {
[dic setObject:x forKey@"X"];
}
然后重新安装,它崩溃了几次,然后又正常工作了。我什至多次更改应用程序的名称,再次没有出现问题。如果用户下载和升级应用程序,我真的担心如果将应用程序更新到商店会导致崩溃。
编辑 8:从商店升级进行测试。 我只是从商店旧版本重新下载。然后升级到新版本(不更改应用程序的名称)。然后更改应用程序的名称。不会出现问题。问题就这么消失了,就像做梦一样......我什至不知道该怎么办。这个模因对我来说绝对正确!好的,感谢所有花时间阅读这篇长文的人。
【问题讨论】:
-
奇怪!我已经重命名了我的演示应用程序 2-3 次,但到目前为止没有发生任何崩溃。有什么具体的步骤或改变来重新制作吗?我也搜索了这个主题,它指出了 safari cookie 清除问题。如果您找到任何解决方案或重新制作它的方法,请告诉我。
-
你看,我所做的只是更改了应用名称。说实话,我也对代码做了一些更改。但这不是问题,因为应用程序甚至还没有启动。好吧,我会更新这个问题。请参阅编辑 5。
-
啊哈哈哈,不错的表情包! :)
标签: ios crash bundle rename launch