13
11

More than 3 years have passed since last update.

UIWebViewを使っているFrameworkを探す

Last updated at Posted at 2020-05-27

アプリにUIWebViewが含まれている場合、App Store Connectへのアップロード時にITMS-90809の警告がメールで送信されたりするかと思います。

ITMS-90809: Deprecated API Usage - App updates that use UIWebView will no longer be accepted as of December 2020. Instead, use WKWebView for improved security and reliability. Learn more (https://developer.apple.com/documentation/uikit/uiwebview).

警告にもある通り、既存アプリでUIWebViewを利用している場合は2020年12月で受け付けがされなくなるようなので、それまでに対応が必要です。
(参考: ウェブビューを使ったAppのアップデート - ニュース - Apple Developer)

アプリ本体のコードに含まれている場合は "UIWebView" のようなキーワードでgrepして探せばいいのですが、依存しているFrameworkの中にあると探しづらいです。
ここでは、nm コマンドを使ってシュッと探す方法をご紹介します。

方法

FRAMEWORK_DIRS=$(find . -name '*.framework')
for framework in $FRAMEWORK_DIRS; do
    fname=$(basename $framework .framework)
    echo $framework/$fname
    nm $framework/$fname | grep UIWeb
done

こんな感じのシェルスクリプトを作って実行すれば楽に探せます。

解説

nm コマンドは、オブジェクト内のシンボルをリストするコマンドです。
(参考: nmコマンドでオブジェクトからシンボルのリストを表示 - Qiita)

このコマンドを使ってFramework内にUIWebViewのシンボルがあるかを調べることができます。
アプリで使われているFrameworkは複数あることが多く、CocoaPodsやCarthageなどで管理されていることも多いと思います。そのため、シェルスクリプトにしてプロジェクトディレクトリ配下のFramework全てに nm するようにしています。

参考記事

13
11
0

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
  3. You can use dark theme
What you can do with signing up
13
11