После обновления до Мауи создайте исключение «ошибка XAGJS7001: System.NullReferenceException» в Xamarin.Android.Tasks.XAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 После обновления до Мауи создайте исключение «ошибка XAGJS7001: System.NullReferenceException» в Xamarin.Android.Tasks.X

Сообщение Anonymous »

Базовый уровень:
Приложение, работающее на Windows, Android и iOS.
  • Отдельные проекты. Xamarin.Android, Xamarin.iOS, Windows.
  • НЕ Xamarin.Forms. Мы осуществляем рендеринг самостоятельно с помощью SkiaSharp и OpenGL.
  • Почти все исходные файлы совместно используются платформами.
  • Сегодня работает на всех платформах.
  • Сегодня работает на всех платформах.
  • li>
    До недавнего времени было доступно на всех платформах.
НО, начиная с этого месяца, Apple отклоняет обновления приложений, если они не запустить на iOS 17 SDK. Что не поддерживается Xamarin.
  • Решил, что пришло время перейти на .Net 8.
  • Решил сначала обновите версию Android.
Планируется использовать Maui таким же «минимальным» способом, как и Xamarin:
< ul>
[*]Создайте полноэкранное растровое изображение на каждой платформе. Используйте наш текущий код рендеринга SkiaSharp/OpenGL.

Миграция на Мауи:
Запустил .Net Upgrade Assistant для переноса приложения Xamarin.Android (без Xamarin.Forms) из .Net Framework 4.7 в .Net 8 и Maui.
Мы минимально используем пользовательский интерфейс для конкретной платформы. : как только у нас есть растровое изображение мобильного экрана (или окна рабочего стола), мы визуализируем все сами, используя SkiaSharp и OpenGL.
Xamarin.Essentials обрабатывает большую часть того, что нам нужно для конкретной платформы. Заменено соответствующими пакетами Maui.
Возможные осложнения в нашем приложении:
  • две библиотеки Xamarin.Android. Основной проект и библиотека классов.
  • древний макет проекта. Первая версия была много лет назад.
  • dll C++.
  • сторонние библиотеки.
  • много, много строк кода C# в сотнях классов.
Хотя мы понимаем, что может потребоваться немало времени, чтобы заставить все работать под Maui, посмотрим, сможем ли мы в по крайней мере, заставьте его собрать и запустить (сначала не вызывая большую часть кода; просто действуйте как тривиальный пример приложения).
Текущее состояние:
  • Компиляция DLL прошла успешно.
  • Отладочная сборка: связывание SdkOnly.
  • PublishTrimmed false (вернитесь к ошибкам в отдельном вопросе позже)
System.NullReferenceException в Xamarin.Android.Tasks.XAJavaTypeScanner.GetJavaTypes.
Я не нашел нигде в Интернете этой проблемы на этом этапе процесса сборки.
Полный список ошибок в выводе 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?

(В качестве временного решения, пока мы решаем проблемы с миграцией.)
(Наш запасной вариант — убрать все и постепенно создавать приложение. Это может занять дни или недели. Хотелось бы подсказать, где искать.)

Подробнее здесь: https://stackoverflow.com/questions/784 ... ferenceexc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»