我最近刚将我的应用名称从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.
似乎在更改应用程序名称后,它还会更改捆绑包,从而导致数据丢失。现在真正的问题是:如何在更改应用程序的名称/包后使用新数据迁移旧数据。模拟器不会产生这个错误,我无法调试到设备的目录中来检查任何内容。
编辑7:突然解决了!
更新应用后:
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
NSString *x = [[NSUserDefaults standardUserDefaults] objectForKey:@"X"];
if (x) {
[dic setObject:x forKey@"X"];
}
然后重新安装,它会崩溃几次,然后再次正常工作。我甚至更改了应用程序的名称几次,没有再出现问题。如果用户下载并升级应用程序,如果将应用程序更新到商店会导致崩溃,我真的很担心。
编辑8:从商店升级进行测试。 我只是从商店旧版本重新下载。然后升级到新版本(不会更改应用程序的名称)。然后更改应用程序的名称。没问题。问题就像梦一样消失了.......我甚至不知道该怎么做。这个模因绝对正确!好吧,感谢所有花时间阅读这篇长篇文章的人。
答案 0 :(得分:0)
构建项目(cmd + b)。转到产品&gt;清洁(shift + cmd + k)。关闭Xcode找到项目目录I.e. Desktop / ABC-XYZ并双击Xcode项目文件打开项目。
答案 1 :(得分:0)
关闭Xcode和所有编辑。
复制项目文件夹。
创建一个新文件夹,例如文档\项目\ Proj_1。
将项目文件粘贴到此处。
打开Xcode,清洁解决方案并尝试重新安装到您的设备。
也许问题出在您的硬盘中。我的变体会更改文件的位置,这会更改硬盘中项目文件的地址。