背景:
可在 Windows、Android 和 iOS 上运行的应用程序。
但从本月开始,苹果将拒绝应用程序升级,除非它们在 iOS 17 SDK 上运行。 Xamarin 不支持。
计划是以与我们使用 Xamarin 相同的“最小”方式使用毛伊岛:
迁移到毛伊岛:
运行 .Net Upgrade Assistant 将 .Net Framework 4.7 上的 Xamarin.Android 应用程序(无 Xamarin.Forms)迁移到 .Net 8 和 Maui。
我们很少使用特定于平台的 UI:一旦我们有了移动屏幕(或桌面窗口)位图,我们就可以使用 SkiaSharp 和 OpenGL 自己渲染所有内容。
Xamarin.Essentials 处理了我们平台特定所需的大部分内容。替换为适当的毛伊岛套餐。
我们的应用程序中可能出现的并发症:
虽然我们意识到可能需要相当长的时间才能让所有内容在 Maui 下正常运行,但看看我们是否至少可以构建和启动它(首先不调用大部分代码;只是像一个简单的示例应用程序一样)。
目前状态:
Xamarin.Android.Tasks.XAJavaTypeScanner.GetJavaTypes 处的 System.NullReferenceException。
在构建过程的这一步中,我没有在互联网上找到任何存在此问题的地方。
VS 输出中错误的完整列表:
2>C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\34.0.52\tools\Xamarin.Android.Common.targets(1513,3): error XAGJS7001: System.NullReferenceException: Object reference not set to an instance of an object.
2>C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\34.0.52\tools\Xamarin.Android.Common.targets(1513,3): error XAGJS7001: at Xamarin.Android.Tasks.XAJavaTypeScanner.GetJavaTypes(ICollection`1 inputAssemblies, XAAssemblyResolver resolver)
2>C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\34.0.52\tools\Xamarin.Android.Common.targets(1513,3): error XAGJS7001: at Xamarin.Android.Tasks.GenerateJavaStubs.Run(XAAssemblyResolver res, Boolean useMarshalMethods)
2>C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\34.0.52\tools\Xamarin.Android.Common.targets(1513,3): error XAGJS7001: at Xamarin.Android.Tasks.GenerateJavaStubs.RunTask()
2>C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\34.0.52\tools\Xamarin.Android.Common.targets(1513,3): error XAGJS7001: at Microsoft.Android.Build.Tasks.AndroidTask.Execute() in /Users/runner/work/1/s/xamarin-android/external/xamarin-android-tools/src/Microsoft.Android.Build.BaseTasks/AndroidTask.cs:line 25
问题:
如何查找上述内部构建错误的原因?
我们的应用程序可能会导致这种情况吗?
额外问题:有没有办法让 Xamarin.iOS 与 iOS 17 SDK 配合使用?
(作为临时解决方案,同时我们解决迁移问题。)
(我们的后备答案是剥离所有内容,一点一点地构建应用程序。这可能需要几天或几周的时间。想要一些关于在哪里查看的线索。)
古代工程布局。第一个版本是几年前的。
这就是症状的原因。创建一个新的 .Net 8 Maui 项目,并添加我们的源(通过 .Net Upgrade Assistant 针对 Maui 进行修改),修复了它。
没有费心去隔离导致失败的确切设置。