Устранение ошибки сборки выпуска в приложении .NET MAUI для Android

Я создаю приложение .NET MAUI, используя .NET версии 7.0.306 (x64) и Visual Studio 2022 версии 17.6.5. Я считаю, что это последние версии. Сейчас я сосредоточен на Android.

Проблема: В режиме отладки приложение работает безупречно. Однако проблема возникает, когда я пытаюсь собрать приложение для выпуска и запустить его на своем реальном физическом тестовом устройстве (Samsung). В конце процесса компиляции Visual Studio я получаю следующее сообщение об ошибке:

      Severity    Code    Description Project File    Line    Suppression State
Warning     MSB3073: The command ""C:\Program Files (x86)\Android\android-sdk\platform-tools\adb" -s RFCN30KRB2M uninstall -k "com.company.appname"" exited with code 1.

Visual Studio каким-то образом удается установить приложение, но оно находится в нерабочем состоянии. Я вручную удалил приложение с устройства перед его созданием.

Что я пробовал: Я искал ответы в Интернете и нашел старую тему, которая, похоже, соответствует описанию моей проблемы. Однако это для приложения Maui Blazor. МауиВыпуск

Я попробовал то, что упоминается в качестве исправления, но это не решило проблему.

Что действительно работает, так это предложения из этого вопроса о переполнении стека :

          <PropertyGroup Condition="'$(TargetFramework)' == 'net7.0-android'">
        <RunAOTCompilation>false</RunAOTCompilation>
        <AndroidLinkMode>None</AndroidLinkMode>
    </PropertyGroup>

Однако я слышал, что эти настройки не следует отключать для режима выпуска, поскольку пакет может стать довольно большим. Я также слышал, что AOT (компиляция заранее) очень важна для iOS.

Мой вопрос: Кто-нибудь знает, что вызывает эту проблему, и была ли она исправлена? Какую версию .NET мне следует использовать, если она уже решена?

Изменить: я только что создал новый проект MAUI с нуля, чтобы посмотреть, будет ли нетронутый проект создаваться в режиме выпуска с самого начала. Я все еще получаю ту же ошибку. Я что-то пропустил? Готов ли MAUI к производству?

MauiApp1, кажется, работает, но опять же, в нем не так уж много логики. Я пытался создать собственное приложение с отключенным компоновщиком и AOT, но основная функциональность, использующая Azure Cognitive Service, не будет работать должным образом. Я тоже не могу отладить, потому что отладчик не подключается в режиме выпуска. Так и должно быть?

Редактировать 2: я только что обновился до Visual Studio 2022 версии 17.7 (вышел 8 августа, исправление во вторник). Я попробую и посмотрю, решит ли это мои проблемы. Это не работает.

Редактировать 3: я установил предварительную версию .NET 8.0.100 и предварительную версию Visual Studio 17.8.0 1, но и там мне не повезло. Я больше не знаю, что попробовать. Мне следовало попытаться создать проект в режиме выпуска, прежде чем тратить недели на разработку своего приложения. Есть ли у кого-нибудь еще такая проблема, и если да, то как вы ее решили?

Стиль кнопки:

      <Style TargetType="Button" x:Key="ButtonStyle">
    <Setter Property="FontFamily" Value="OpenSansRegular"/>
    <Setter Property="FontSize" Value="16"/>
    <Setter Property="Padding" Value="10,10"/>

    <Setter Property="Margin" Value="5" />
    <Setter Property="MinimumHeightRequest" Value="65"/>
    <Setter Property="MinimumWidthRequest" Value="65"/>
    <Setter Property="BackgroundColor" Value="{StaticResource Primary}" />
    <Setter Property="TextColor" Value="{StaticResource Black}" />
    <Setter Property="CornerRadius" Value="10"/>
    <Setter Property="Shadow">
        <Setter.Value>
            <Shadow Brush="{StaticResource TertiaryBrush}" Offset="10,10" Radius="40" Opacity="0.80"/>
        </Setter.Value>
    </Setter>

    <Setter Property="VisualStateManager.VisualStateGroups">
        <VisualStateGroupList>
            <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Normal" />
                <VisualState x:Name="Disabled">
                    <VisualState.Setters>
                        <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray950}, Dark={StaticResource Gray200}}" />
                        <Setter Property="BackgroundColor" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray600}}" />
                    </VisualState.Setters>
                </VisualState>
            </VisualStateGroup>
        </VisualStateGroupList>
    </Setter>
</Style>

2 ответа

Я могу воспроизвести вашу проблему в своем проекте. И я обнаружил, что TextColor изменится, а BackgroundColor — нет, когда я тестирую его в режиме выпуска.

Поэтому я использую свойство Background вместо свойства BackgroundColor , и это сработало. Такой как:

      <Style TargetType="Button" x:Key="ButtonStyle">
    <Setter Property="FontFamily" Value="OpenSansRegular"/>
    <Setter Property="FontSize" Value="16"/>
    <Setter Property="Padding" Value="10,10"/>

    <Setter Property="Margin" Value="5" />
    <Setter Property="MinimumHeightRequest" Value="65"/>
    <Setter Property="MinimumWidthRequest" Value="65"/>
    <Setter Property="Background" Value="{StaticResource Primary}" />
    <Setter Property="TextColor" Value="{StaticResource Black}" />
    <Setter Property="CornerRadius" Value="10"/>
    <Setter Property="Shadow">
        <Setter.Value>
            <Shadow Brush="{StaticResource TertiaryBrush}" Offset="10,10" Radius="40" Opacity="0.80"/>
        </Setter.Value>
    </Setter>

    <Setter Property="VisualStateManager.VisualStateGroups">
        <VisualStateGroupList>
            <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Normal" />
                <VisualState x:Name="Disabled">
                    <VisualState.Setters>
                        <Setter Property="TextColor" Value="{AppThemeBinding Light={StaticResource Gray950}, Dark={StaticResource Gray200}}" />
                        <Setter Property="Background" Value="{AppThemeBinding Light={StaticResource Gray200}, Dark={StaticResource Gray600}}" />
                    </VisualState.Setters>
                </VisualState>
            </VisualStateGroup>
        </VisualStateGroupList>
    </Setter>
</Style>

Для получения дополнительной информации вы можете обратиться к известной проблеме, связанной с тем, что iOS и Android в режиме выпуска не меняют цвет фона кнопки при изменении состояний .

Первоначально упомянутая проблема заключалась в сбое сборки в конфигурации выпуска, и у меня была такая же проблема.

Когда я переключил конфигурацию сборки на выпуск и проверил ход сборки в окне «Вывод/сборка», последнее сообщение было

      ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Как было предложено в первом редактировании, я отключил AOT, и сборка выпуска прошла успешно.

Мое приложение ориентировано на Net6.

Другие вопросы по тегам