こんにちは。モバイルエンジニアのT.Sです。
プロジェクトで.NET関連の調査をしました。その中でもNU1608という警告を解決するのに時間がかかったため、記録として共有しようと思います。
NuGet の警告(Fragment / Lifecycle)
内容
以下のような警告が出ていました
NU1608という、パッケージ参照に関するバージョンの競合が起きていたようです。
今回は、Lifecycle という UI 関連のパッケージで起きていました。
結論
最初はnugetパッケージ管理のバージョンが原因だと思いましたが、パッケージの直接参照ではなく、推移的な呼び出しと、依存関係(transitive dependency)による警告でした。 Nugetパッケージ管理に関して触れたことはありましたが、パッケージの中身が間接的に参照しているところまではすぐに気づくことができませんでした。
原因
Xamarin.AndroidX.AppCompat 1.7.1 というAPI互換用のライブラリがあります。
このライブラリで間接的にFragment 1.8.8を参照し、このFragmentが Lifecycleパッケージの古いバージョンを参照しているようでした。 他のcsprojでは最新のものを参照しているものがあったようで、バージョンの競合のため警告が出ていました。
解決方法
必要なcsprojで
<PackageReference Include="Xamarin.AndroidX.Lifecycle.ViewModelSavedState.Android" Version="2.9.2">
とし、LifeCycle関連の最新バージョンを参照させることで解決できました。
まとめ
Androidのライブラリに関して触れることは少なかったため、これからの開発でも調べてみたいです。 次は解決までのコマンドについてまとめたいと思います。
おわりに
KENTEMでは、様々な拠点でエンジニアを大募集しています! 建設×ITにご興味頂いた方は、是非下記のリンクからご応募ください。