LoginSignup
3

More than 3 years have passed since last update.

posted at

updated at

Organization

iOS13の設定アプリにつまずいた

はじめに

みなさんご存知かと思いますが iOS13 は設定アプリのクラッシュ祭りでした:confetti_ball:

設定アプリをクラッシュさせるためのアップデートといっても過言ではありません!!:expressionless:

某マッチングアプリの話

iOS13.2.3 で某マッチングアプリがインストールされていると設定アプリがクラッシュするという話もありました。

参考

【iPhone】設定が開けない、落ちる問題がiOS13.2.3で報告 Pairsの削除で改善する事例も

こちらは iOS13.2.3 から各アプリ情報を先読みするようになり某アプリの plist ファイルの値不正(型不正?)によって設定アプリを開くと数秒後にクラッシュするようになっていたようです。

私も調査のためインストールしてみたところ無事クラッシュしました:expressionless:

こちらは某アプリの値不正が原因でしたが、サードパーティ製のアプリが設定アプリに影響するというのは中々のバグなような気もします。(なんか色々悪いことできそう:smiling_imp:

某アプリのバグはすぐに修正され今はもうクラッシュしません:innocent:

みんな大好きLicensePlistの話

ライセンス表示がめっちゃ楽なみんな大好き LicensePlist も iOS13 の設定アプリでクラッシュするというのに遭遇していました:disappointed_relieved:(たぶん全部 iOS 側のバグ:speak_no_evil:)

13

押したらクラッシュ!!

とりあえずLicensePlistの各バージョンについて動作を確認してみました。Root.plist の記載は下記。

Root.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
    <key>PreferenceSpecifiers</key>
    <array>
        <dict>
            <key>Type</key>
            <string>PSGroupSpecifier</string>
            <key>FooterText</key>
            <string>Copyright</string>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSChildPaneSpecifier</string>
            <key>Title</key>
            <string>Licenses</string>
            <key>File</key>
            <string>com.mono0926.LicensePlist</string>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSTitleValueSpecifier</string>
            <key>DefaultValue</key>
            <string>1.0.0</string>
            <key>Title</key>
            <string>Version</string>
            <key>Key</key>
            <string>sbVersion</string>
        </dict>
    </array>
    <key>StringsTable</key>
    <string>Root</string>
    </dict>
</plist>

LicensePlist 2.6.0

これ 2.6.0: SwiftPM (Swift Package Manager) Support

2.7.1: iOS 13 support の前のバージョンです。(2.7.0入れたかったんですが pod install が失敗するのであきらめました:confused:

iOS12.4.1 iOS13.0 iOS13.1 iOS13.2.2 iOS13.3
:o: :x: :o: :o: :o:

なんかたまにへん(gif わかりにくい場合この Issue の this behavior に動画がありました。)

260

LicensePlist 2.7.1

これ 2.7.1: iOS 13 support

iOS13 でのクラッシュを受けすぐに有志が動きました。(さすがは人気ライブラリ:clap:
生成される plist ファイルに Type: PSGroupSpecifier を加えたらいけるんじゃないか?とのこと。

iOS12.4.1 iOS13.0 iOS13.1 iOS13.2.2 iOS13.3
:o: :x: :x: :x: :o:

13.1 と 13.2.2 はライセンス詳細から一覧に戻るとクラッシュ!!!

LicensePlist 2.10.0(2019/12/21時点で最新)

これ 2.10.0: Add --single-page option

iOS13 対応後もクラッシュの報告は続き対応されたのがこのバージョン。その後も有志が調査してどうやら3階層(Licenses -> ライブラリ一覧 -> ライセンス情報)push だとクラッシュするとのことでライブラリ一覧を削除した Licenses -> ライセンス情報の2階層にするオプション --single-page が追加されました。

こんな感じ

setting

--single-page なし

iOS12.4.1 iOS13.0 iOS13.1 iOS13.2.2 iOS13.3
:o: :x: :o: :x: :o:

--single-page あり

iOS12.4.1 iOS13.0 iOS13.1 iOS13.2.2 iOS13.3
:o: :x: :o: :o: :o:

クラッシュしていた原因の詳細はわかりませんが、クラッシュログにやたらと SwiftUI とあったのでそのへんなんだと思います...:neutral_face:

このあたりのバグは iOS13.3 で無事修正されたそうです:clap:

133

クラッシュしないけど一度表示して戻ると License を押しても画面遷移しない...(まあクラッシュしないし一回目はちゃんとライセンスがみれるのでOK:innocent:

さいごに

LicensePlist はもう iOS のアップデートを待つしかないと思ってましたが対応されてよかったです:laughing:
(某アプリは今後もクラッシュしないか調査を続行しようと思います:neutral_face:

ぎりぎりセーフ:mask:

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3