iOS14 适配:どの SDK がクリップボードを使用しているかを検索する方法#
背景#
iOS14 のパブリックベータ版がリリースされた後、私たちのアプリでバックグラウンドから起動するとクリップボードの読み取りのプロンプトが表示されるようになりました。セキュリティ要件を確認するために、アプリをグローバルに検索しましたが、クリップボードを読み取るコードは見つかりませんでした。第三者の SDK の問題である可能性が高いですが、プロジェクトには 10 以上のサードパーティの SDK が統合されており、それぞれを個別に確認して削除するのは非常に手間がかかります。
数日間頭を悩ませた後、頼りになる V 友とグループのメンバーに助けを求め、良い方法を見つけました。
- ステップ 1:Xcode のシンボリックブレークポイントを使用して、[UIPasteboard generalPasteboard] をデバッグし、再現手順に従って進めます。例えば、私たちのアプリはバックグラウンドから起動するとこのプロンプトが表示されるので、ブレークポイントを設定し、そのフローを実行します。
- ステップ 2:ブレークポイントは、このメソッドを呼び出している場所で停止します。その後、上下にスクロールして、どの SDK が関与しているかを確認できない場合は、いくつかのステップを進めて呼び出し元を特定します。
- ステップ 3:具体的な呼び出し元のクラスが明らかになったら、どの SDK かを確認する方法はありますか?
プロジェクトディレクトリで以下のコマンドを使用します(グループのメンバーからの助け):
find . -type f | grep -e ".framework" | xargs grep -s UIPasteboard
find . -type f | grep -e ".a" | xargs grep -s AUPasteboard
すると、次のような結果が表示されます。
このクラスは Alipay の SDK であることがわかります。その後、SDK を削除した後、再現手順が正常に動作するかどうかを確認し、他の SDK でも同様の呼び出しがあるかどうかを確認します。