pubspec.yaml: 依存バージョンの最初の構成ファイルです。
pubspec.lock: これは依存バージョンの 2 番目の構成ファイルであり、pubspec.yaml 構成に従って特定の依存バージョンを生成するために使用されます。
バージョンに依存する構成が 2 つあるのはなぜですか?
例えば:
1. pubspec.yaml のプラグインは次のとおりです。
スクフライト: ^2.2.2
2. flutter pub get を実行すると、対応する pubspec.lock は次のようになります。
sqflite:
依存関係: "direct main"
説明:
名前: sqflite
URL: "https://pub.flutter-io.cn"
ソース: ホストされているバージョン: "2.2.8+4"
3. このとき表示されるバージョン 2.2.8+4 は実際の構成 2.2.2 とは異なりますが、これは ^ が使用されているためであり、その関数は 2.2.2 から 3.0.0までのバージョンを表します。サーバーには Update があるため、 flutter pub get コマンドを実行するたびにリアルタイムで更新され、コンパイルされた 2 つのバージョンの依存関係が異なる可能性があり、その結果、予期しないエラーが発生する可能性があります。
4. 解決策:
ハードコードされた構成を pubspec.yaml: sqflite: 2.2.2 に記述することで、バージョンが自動的に更新されなくなり、今後は手動で更新する必要があります。
対応する pubspec.lock は次のとおりです。
sqflite: 依存関係: "direct main" 説明: 名前: sqflite URL: "https://pub.flutter-io.cn" ソース: ホストされている バージョン: "2.2.2"
5. ^ の機能について:
^0.0.1: 0.0.1 ~ 0.0.2 のバージョン。
^0.1.0: 0.1.0 ~ 0.2.0 のバージョン。
^1.0.0: 1.0.0 ~ 2.0.0 のバージョン。
6. pubspec.lock は .gitignore ファイルに追加する必要がありますが、flutter pub get が実行されるたびに自動的に生成されるため、サービスに送信する必要はありません。生成された名前が _ios ではなく _foundation で終わっている場合は、ローカルの fluuter SDK をバージョン 3.0 以降にアップグレードする必要があります。そうしないと、次の図に示すように、スタジオでの実行時にエラーが報告されます。