2017-04-11 13 views
0

いくつかのバグを修正するためにAppleStoreのアップデートをリリースしました。iOS - NSUserDefaultをデバッグするためのアドバイスがアップデート中にクラッシュする

アプリをアップデートした後にアプリを起動すると、多くのユーザーがクラッシュします。

アプリをアンインストールしてもう一度ダウンロードすると、問題なく動作します。

いくつかのクラッシュレポートとCrashlyticsダッシュボードを分析した後、私たちのアプリケーションの1つの特定のライブラリがNSUserDefaultの「最初の起動日」をチェック/設定しているという結論に達しました。

これに加えて、すべてをアンインストール/インストールした後にうまくいきますが、NSUserDefaultの問題が原因であると推測しました。

私は私の心に来たいくつかの質問があり、私は急いで私は何をすべきか分からない。

私はそれを修正するために何ができますか?

  • 私は2つの更新の間に開発中にNSUserDefaultを操作しませんでした。

  • これらの更新の間に発生する可能性のある状態と変更を比較するために、データベースの「差分」を作成できますか?

  • データベースをリセットする必要がありますか?

  • 最初のインストール後にクラッシュを実験したユーザーの大多数が、実際のアップデート状況を表すものではありませんが、テスト担当者全員がアップデートを検証したため問題はありませんでした。すべて。

  • 私の頭に浮かんだ解決策は、以前のバージョンのストアから新しいアップデートをリリースすることですが、この「ロールバック」中にNSUserDefaultがアプリケーションをクラッシュさせないようにするにはどうすればよいでしょうか。 問題がデータベースの状態から来たものか、またはゼロ の値であるかどうかを意味します。図書館は2歳で、もう更新されませんが、 はこのライブラリのクラッシュを経験しませんでした。

私は物事を完了して清掃するために任意のアドバイス/情報を受け取ります。

+2

コードを管理するためのGitなどがありますか?デバイスからアプリケーションを削除し、ブランチ/コミットをチェックアウトし、リリースされたバージョンに戻り、デバイスにインストールし、最後に更新されたものに戻って、デバッガでもう一度起動します。私はそれをより素早く再現するために複製する必要があることをお勧めします(前のバージョンのもの、前のバージョンのもの)。 – Larme

+0

私は同じ問題に直面しました。問題は、 'NSUserDefaults'にカスタムオブジェクトを格納するために私のコードで使った' RMMapper'という名前のライブラリが1つあったことです。クラッシュはブールで無価値なものだったからだ。 –

+0

私はipaファイルで行うことができます。私たちはJenkinsとGitを使用します。 – Balanced

答えて

0

1つのアイデアは、NSUserDefaultsメソッドを捕まえたり、少なくともログに記録したりすることです。 -[NSUserDefaults setObject:forKey:]を見て、入力が安全か否かをチェックし、そうでない場合は破棄することができます。

+0

ライブラリはラップされ、.aファイルとして統合されています。ヘッダーがあるだけで、setObjectのコードにアクセスできません。あなたのソリューションは、私が同期を揺るがすことができ、設定されているものの洞察を得ることができます/私のコードをoutisde得る? – Balanced

+1

私は代わりに 'setObject:forKey:'を使うことを勧めます。そして、それは、ユーザーのデフォルトに格納されているものと、誰がそれを呼び出すかにかかわらず、いつ格納されるのかについての洞察を与えるでしょう。 – DarkDust

関連する問題