🤩

【コマンド編】flutter pub cache repairについて理解しよう

2022/04/04に公開

ビルドが失敗するケース

システムキャッシュ内のパッケージが何らかの理由で変更または破損している場合は、ビルドが失敗します。

下記はアプリを実行した時のWarningですが、iOS11.0ではimage-pickerパッケージのUIImagePickerControllerReferenceURLは非推奨ですといっています。

Writing result bundle at path:
    	/var/folders/bv/xylj79jn22g9h4gp9fcxr8480000gn/T/flutter_tools.0FbhJN/flutter_ios_build_temp_dir2mFrJA/temporary_xcresult_bundle
/Users/apple/Developer/flutter/.pub-cache/hosted/pub.dartlang.org/image_picker-0.8.4+11/ios/Classes/FLTImagePickerPhotoAssetUtil.m:17:44: warning: 'UIImagePickerControllerReferenceURL' is deprecated: first deprecated in iOS 11.0 - Will be removed in a future release, use PHPicker. [-Wdeprecated-declarations]
      NSURL *referenceURL = [info objectForKey:UIImagePickerControllerReferenceURL];
                                               ^
    In module 'UIKit' imported from /Users/apple/StudioProjects/hold-2021/ios/Pods/Target Support Files/image_picker/image_picker-prefix.pch:2:
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator15.2.sdk/System/Library/Frameworks/UIKit.framework/Headers/UIImagePickerController.h:62:51: note: 'UIImagePickerControllerReferenceURL' has been explicitly marked deprecated here
    UIKIT_EXTERN UIImagePickerControllerInfoKey const UIImagePickerControllerReferenceURL API_DEPRECATED("Will be removed in a future release, use PHPicker.", ios(4.1, 11.0)) API_UNAVAILABLE(tvos); // an NSURL that references an asset in the AssetsLibrary framework

対処法

今回の場合は、下記のコマンドを実行します。
そうすることで、上記のWarningは解消されました。

flutter pub cache repair

flutter pub cache repairは何をしているのか?

flutter pub cache repairは、システムキャッシュ内の全てのパッケージを再インストールすることができます。
今回は、非推奨になっていたパッケージを推奨されたパッケージとして修復しているのではないかと思っています笑
このコマンドは、システムキャッシュ内のパッケージが何らかの理由で変更または破損している場合に役立ちます。

Discussion