API 数据在发布模式下不显示,但在 MAUI 应用程序中的调试模式下工作

问题描述 投票:0回答:1

我正在开发一个 MAUI 应用程序,该应用程序从 API(CoinDesk API)获取数据以显示当前的比特币价格数据。在调试模式下数据获取工作正常,但在发布模式下 API 调用无法显示任何数据。这是我获取数据的代码:

using Acr.UserDialogs;
using Seraphis.Model;
using System;
using System.Diagnostics;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;

namespace Seraphis.Api
{
    class FetchCoinDeskDataApi
    {
        private readonly HttpClient _client;

        public FetchCoinDeskDataApi()
        {
            _client = new HttpClient();
        }

        public async Task<string> FetchCoinDeskDataAsync()
        {
            string url = "https://api.coindesk.com/v1/bpi/currentprice.json";

            try
            {
                var response = await _client.GetStringAsync(url);

                if (string.IsNullOrEmpty(response))
                {
                    Debug.WriteLine("Empty response received.");
                    UserDialogs.Instance.Toast("No data received from API.");
                    return null;
                }

                Debug.WriteLine($"Response: {response}");

                return response;
            }
            catch (HttpRequestException httpEx)
            {
                Debug.WriteLine($"HTTP Error: {httpEx.Message}");
                UserDialogs.Instance.Toast("Failed to fetch data. Please check your internet connection.");
                return null;
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"Error: {ex.Message}");
                UserDialogs.Instance.Toast("An error occurred while fetching the data.");
                return null;
            }
        }
    }
}

到目前为止我已采取的步骤:

API 在 Debug 模式下工作正常,但在 Release 模式下不显示数据。错误处理:我添加了 try-catch 块来记录失败时的错误,但在发布模式下没有任何显示。 HttpClient 初始化:我在应用程序的生命周期中重用 HttpClient。权限:我已验证是否为 Android (AndroidManifest.xml) 和 iOS (Info.plist) 声明了必要的互联网权限。日志记录:我使用 Debug.WriteLine 进行日志记录,但它在发布模式下不显示。

我怀疑的事情:

链接器/修剪问题:在发布编译期间可能会修剪或删除代码的某些部分。网络相关权限:发布模式下网络访问可能会出现问题。超时/网络问题:调试和发布之间可能存在一些差异,导致网络请求在发布模式下失败。

我尝试过的:

我已确认API端点可以访问,并且API本身没有问题。尝试禁用 .csproj 文件中的修剪以进行调试(错误)。我还确保互联网权限设置正确。

我在寻找什么:

为什么在 Debug 模式下可以看到数据,而在 Release 模式下却看不到数据?如何解决此问题,以便 API 调用也能在发布模式下工作?关于如何在 Release 模式下调试 API 问题或可能需要针对 Release 进行调整的配置,有什么建议吗?

任何帮助将不胜感激!

c# android xamarin.android maui
1个回答
0
投票

解决
XA1030
错误:在Release模式下禁用AOT编译和修剪

如果您在

Release
模式下构建时遇到错误XA1030: The 'RunAOTCompilation' MSBuild property is only supported when trimming is enabled,这是因为AOT(提前)编译需要启用修剪

如果您不需要 AOT 编译或修剪,可以通过在

.csproj
文件中禁用这两者来解决此问题。方法如下:

修复
.csproj

修改

.csproj
文件以实现 Release 模式,如下所示:

<PropertyGroup Condition="'$(Configuration)'=='Release'">
    <PublishTrimmed>false</PublishTrimmed>  <!-- Disable trimming -->
    <RunAOTCompilation>false</RunAOTCompilation>  <!-- Disable AOT compilation -->
    <Optimize>true</Optimize> <!-- Enable optimization for Release -->
</PropertyGroup> 

说明:

  • PublishTrimmed=false
    :禁用修剪,意味着没有未使用的代码 将被删除。

  • RunAOTCompilation=false
    :禁用AOT编译,也就是
    通常用于提高启动性能,但需要调整
    待启用。

  • Optimize=true
    :启用发布版本的代码优化,
    以获得更好的性能。

最后步骤:

将更改保存到您的

.csproj
文件。

清理并重建您的项目。

在发布模式下测试您的应用程序,以确认一切都按预期工作。

通过执行这些步骤,您应该能够在发布模式下构建并运行您的应用程序,而不会遇到

XA1030 error

© www.soinside.com 2019 - 2024. All rights reserved.