不合格理由
アプリがカメラ機能を使用するにもかかわらず xxx-Info.plist にカメラ機能を使用する理由の記載(NSCameraUsageDescription)がない。
カメラ機能を明示的には使用していないケースであっても、OpenCV(opencv2.framework)を組み込むとカメラ機能を呼び出す(ことができる)バイナリ・オブジェクトがアプリに含まれてしまう。
フレームワーク(バイナリ・オブジェクト)の中身のチェック方法
1 2 3 4 |
$ nm opencv2.framework/opencv2 | grep AVCaptureDeviceInput U _OBJC_CLASS_$_AVCaptureDeviceInput U _OBJC_CLASS_$_AVCaptureDeviceInput |
AVCaptureDeviceInputがシンボルに含まれることが不合格の理由となっている
カメラアクセス機能を除外してopencv2.frameworkを作成する方法
1. GitHubからソースコードを取得する
1 2 3 |
$ cd ~/<my_working_directory> $ git clone https://github.com/opencv/opencv.git |
> ~/<my_working_directory>は個人の環境に応じて書き換える
2. ビルドするバージョンをチェックアウトする
1 2 3 |
$ cd ~/<my_working_directory>/opencv $ git checkout refs/tags/3.2.0 |
> "3.2.0"は必要に応じて書き換える
3. (OpenCVのビルドスクリプトのための)シンボリック・リンクを作成する
1 2 3 |
$ cd / $ sudo ln -s /Applications/Xcode.app/Contents/Developer Developer |
4. カメラアクセス機能(videoio)除外をオプション指定に加えてビルドスクリプトを実行する
1 2 3 |
$ cd ~/<my_working_directory> $ python opencv/platforms/ios/build_framework.py --without videoio ios |