Flutterプロジェクトpubspec.yamlとpubspec.lockの関係

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 以降にアップグレードする必要があります。そうしないと、次の図に示すように、スタジオでの実行時にエラーが報告されます。

おすすめ

転載: blog.csdn.net/szdenny/article/details/131224815