iOS14 に適応するためにどの SDK がクリップボードを使用しているかを調べる#
背景#
iOS14 のパブリックベータ版がリリースされた後、私たちのアプリがバックグラウンドから呼び出されると、クリップボードを読み取るという警告が表示されるようになりました。安全要件を満たすためにすぐに調査を行い、私たちのアプリを全体的に検索しましたが、クリップボードを読み取るコードは見つかりませんでした。非常に不運なことに、これはサードパーティの SDK の問題である可能性が高いですが、プロジェクトには十数個のサードパーティ SDK が統合されており、一つ一つ調査して削除するのは大変です。もし二つの 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
すると次のように表示されます。
このクラスが支付宝の SDK であることがわかります。SDK を削除した後、再現手順が解決されたかどうかを確認し、解決されていない場合はこのプロセスを繰り返し、他に同様の呼び出しを行っている SDK がないかを確認します。