我正在开发一个 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 进行调整的配置,有什么建议吗?
任何帮助将不胜感激!
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
。