Я пытаюсь создать .NET-приложение для Android в своем конвейере Gitlab CI, но «официальный» способ, который я нашел, похоже, не работает, или я что-то неправильно понял.
Я использовал шаблон приложения для Android, а не шаблон MAUI. Насколько я понимаю, мне в основном нужно начать с образа dotnet sdk, установить рабочую нагрузку dotnet android, установить android sdk и jdk, а затем просто вызвать dotnet build или что угодно.
Когда мне впервые не удалось это сделать, dotnet очень услужливо отправил меня установить зависимости .NET для Android, что кажется мне очень полезным, поскольку там говорится, что я просто звоню
dotnet build -t:InstallAndroidDependencies -p:AndroidSdkDirectory=$CI_PROJECT_DIR/android-sdk -p:JavaSdkDirectory=$CI_PROJECT_DIR/java-sdk -p:AcceptAndroidSdkLicenses=True
И волшебная цель MSBuild установит для меня и android sdk, и jdk.
Но это не так. Насколько я могу судить, проблема связана с пользователем или чем-то еще:
/usr/share/dotnet/packs/Microsoft.Android.Sdk.Linux/36.1.30/tools/Xamarin.Installer.Common.targets(19,3): error : Exception caught while unzipping '/tmp/tmp81YXys.tmp' in '/tmp/7e41a2ed'. System.InvalidOperationException: Internal error: CommonUtilities.Helpers.UserName must have a valid value [/builds/Regenhardt/dual-camera/DualCamera/DualCamera.csproj]
Итак, я, вероятно, не первый человек, который создает приложение .NET Android на Gitlab CI, должна быть передовая практика или что-то вроде чего-то простого для создания приложения .NET Android в конвейере CI?
Вот моя текущая конфигурация конвейера, в которой я добавил цель сборки к фактическому вызову сборки, потому что я думал, что dotnet уже должен быть достаточно умным, но, конечно, это не так. работаю, потому что тогда меня бы здесь не было:
image: mcr.microsoft.com/dotnet/sdk:10.0
stages:
- build
before_script:
- dotnet workload install android
build:
stage: build
script:
- dotnet build DualCamera/DualCamera.csproj -t:InstallAndroidDependencies -p:AndroidSdkDirectory=$CI_PROJECT_DIR/android-sdk -p:JavaSdkDirectory=$CI_PROJECT_DIR/java-sdk -p:AcceptAndroidSdkLicenses=True
Подробнее здесь: https://stackoverflow.com/questions/798 ... i-pipeline