标签: maui

使用 Xamarin.Firebase 时“无法解析:Lcom/google/android/datatransport/TransportFactory”

我正在使用当前预览版 11 创建一个 .NET MAUI 应用程序。
当我尝试实现推送通知时,我添加了该Xamarin.Firebase.Messaging包,仅添加此包会导致启动应用程序时崩溃,但出现以下异常:

java.lang.NoClassDefFoundError:解析失败:Lcom/google/android/datatransport/TransportFactory;
在 com.google.firebase.datatransport.TransportRegistrar.getComponents(TransportRegistrar.java:32)
在 com.google.firebase.components.ComponentRuntime.discoverComponents(ComponentRuntime.java:109)
在 com.google.firebase.components.ComponentRuntime.( ComponentRuntime.java:91)
位于 com.google.firebase.components.ComponentRuntime.(ComponentRuntime.java:45)
位于 com.google.firebase.components.ComponentRuntime$Builder.build(ComponentRuntime.java:360)
位于 com.google。 firebase.FirebaseApp.(FirebaseApp.java:427)
位于 com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:299)
位于 com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:267)
位于 com.google。 firebase.FirebaseApp.initializeApp(FirebaseApp.java:252)
在 com.google.firebase.provider.FirebaseInitProvider.onCreate(FirebaseInitProvider.java:51)
在 android.content.ContentProvider.attachInfo(ContentProvider.java:2388)
在 android.content .ContentProvider.attachInfo(ContentProvider.java:2358)
位于 com.google.firebase.provider.FirebaseInitProvider.attachInfo(FirebaseInitProvider.java:45)
位于 android.app.ActivityThread.installProvider(ActivityThread.java:7239)
位于 android.app。 ActivityThread.installContentProviders(ActivityThread.java:6780)
在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:6697)
在 android.app.ActivityThread.access$1300(ActivityThread.java:237)
在 android.app.ActivityThread$H。 handleMessage(ActivityThread.java:1913)
在 android.os.Handler.dispatchMessage(Handler.java:106)
在 android.os.Looper.loop(Looper.java:223)
在 android.app.ActivityThread.main(ActivityThread.java :7656)
在java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
在com.android.internal.os.ZygoteInit.main (ZygoteInit.java:947)
引起:java.lang.ClassNotFoundException:在路径上找不到类“com.google.android.datatransport.TransportFactory”:DexPathList[[zip文件“/data/app/.../” base.apk"],nativeLibraryDirectories=[/data/app/.../lib/x86_64, /data/app/.../base.apk!/lib/x86_64, /system/lib64, /system_ext/lib64] ]
在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:379)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 24更多的

在构建过程中我收到以下警告:

obj\Debug\net6.0-android\lp\153\jl\classes.jar:com/google/firebase/datatransport/TransportRegistrar.class 中发出警告:未找到 …

c# android firebase xamarin maui

6
推荐指数
1
解决办法
2017
查看次数

如何在MAUI中设置ContentPage全屏(或沉浸式)?

是否有一个属性可以设置页面全屏显示?

(在 Xamarin 中,可以为 Android 等设置沉浸式模式。)

.net maui

6
推荐指数
1
解决办法
1万
查看次数

如何将我的 MAUI 应用连接到 Firestore 数据库?(通过服务帐户 json 文件)

创建一个 MAUI 应用程序并尝试将其连接到 Firestore。我按照此处的建议下载服务帐户 JSON 文件并设置GOOGLE_APPLICATION_CREDENTIALS环境变量。

我从我的 firebase 项目在线下载了我的服务文件,将其重命名为GoogleAppCredentials.json,然后使用构建操作“MauiAsset”将其包含在我的 MAUI 项目中,如下所示:

GoogleAppCredentials 位置

然后我的 cs 文件引用该文件:

string path = "GoogleAppCredentials.json";
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", path);
Run Code Online (Sandbox Code Playgroud)

但是当我在 Android 模拟器上运行该应用程序时,出现以下错误:

System.AggregateException
  Message=One or more errors occurred. (Error reading credential file from location GoogleAppCredentials.json: Could not find file '/GoogleAppCredentials.json'.
Please check the value of the Environment Variable GOOGLE_APPLICATION_CREDENTIALS)
Run Code Online (Sandbox Code Playgroud)

在 Windows 机器上...

System.AggregateException
  Message=One or more errors occurred. (Error reading credential file from location GoogleAppCredentials.json: Could not find file 'C:\WINDOWS\system32\GoogleAppCredentials.json'.
Please …
Run Code Online (Sandbox Code Playgroud)

.net c# firebase google-cloud-firestore maui

6
推荐指数
1
解决办法
3425
查看次数

dotnet 发布错误

我使用这些资源来学习如何发布 MAUI 应用程序:

\n

https://learn.microsoft.com/en-us/dotnet/maui/ios/deployment/overview

\n

https://github.com/dotnet/maui/issues/4397

\n

https://github.com/dotnet/sdk/issues/21877

\n

基于这些,我尝试了不同的变体来发布,但它们都不起作用:

\n
dotnet publish -f:net6.0-ios -c:Release /p:RuntimeIdentifier=ios-arm64 \n
Run Code Online (Sandbox Code Playgroud)\n
\n

错误:运行时标识符“ios-arm64”无效。

\n
\n
dotnet publish -f:net6.0-ios -c:Release /p:RuntimeIdentifier=ios-arm64 --no-restore\n
Run Code Online (Sandbox Code Playgroud)\n
\n

错误 NETSDK1032:RuntimeIdentifier 平台“ios-arm64”和\nPlatformTarget“x64”必须兼容。

\n
\n
dotnet build -f:net6.0-ios -c:Release /p:RuntimeIdentifier=ios-arm64 /p:BuildIpa=true\n
Run Code Online (Sandbox Code Playgroud)\n
\n

错误:运行时标识符“ios-arm64”无效。

\n
\n
dotnet build -f:net6.0-ios -c:Release /p:RuntimeIdentifier=ios-arm64 /p:BuildIpa=true --no-restore\n
Run Code Online (Sandbox Code Playgroud)\n
\n

错误 NETSDK1032:RuntimeIdentifier 平台“ios-arm64”和\nPlatformTarget“x64”必须兼容。

\n
\n

更新
\n环境:
\nWindows 10 家庭版 - 21H2
\nVS 2022 版本 17.3.0 预览版 1.1

\n

更新2
\n根据答案,我现在有了这个 csproj 文件:

\n …

maui .net-maui

6
推荐指数
1
解决办法
5973
查看次数

.NET MAUI 社区工具包 Popup PopupHandler 不兼容

我开始使用 .NET MAUI。我刚开始开发就遇到了问题。我想显示一个弹出窗口,并且我正在使用社区工具包。

我所做的只是:

我创建了一个新的 .NET MAUI 应用程序项目,安装了社区工具包 NuGet 包(当然还有启动类中的 .UseMauiCommunityToolkit)并为弹出窗口添加了一个 XAML 文件:

<?xml version="1.0" encoding="utf-8" ?>
<toolkit:Popup xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
               xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
               xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
               x:Class="TestApp.ProfilePopup">

    <VerticalStackLayout>
        <Label Text="This is a very important message!" />
    </VerticalStackLayout>

</toolkit:Popup>
Run Code Online (Sandbox Code Playgroud)

我没有这个弹出窗口的部分类

我刚刚修改了 MainPage 上的按钮以显示弹出窗口:

    private void OnCounterClicked(object sender, EventArgs e)
    {

        var popup = new ProfilePopup();

        this.ShowPopup(popup);

    }
Run Code Online (Sandbox Code Playgroud)

如果我运行此应用程序并单击按钮以显示弹出窗口,我将收到错误消息:

CommunityToolkit.Maui.Core.Handlers.PopupHandler found for TestApp.ProfilePopup is incompatible

如果我用 C# 创建弹出窗口,它会起作用:

    private void OnCounterClicked(object sender, EventArgs e)
    {
        var popup = new Popup
        {
            Content = new VerticalStackLayout
            {
                Children …
Run Code Online (Sandbox Code Playgroud)

popup maui

6
推荐指数
1
解决办法
7223
查看次数

如何解决“请在运行应用程序之前选择有效的设备。” 适用于 Visual Studio Preview 2022 中的 Android?

按照本文的指示将我的项目从 Xamarin.Forms 迁移到 .NET MAUI 后我可以将其部署到 Android 模拟器,但是当我将其推送到 Gitlab 中的新分支时,将其克隆到新的本地文件夹并部署它对于 Android 模拟器,我从克隆项目解决方案的输出窗口中收到此错误。构建成功,但部署失败。

1>------ Deploy started: Project: x.Android, Configuration: Debug Any CPU ------
1>Please select a valid device before running the application.
1>Deploy failed
========== Deploy: 0 succeeded, 1 failed, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

我的操作系统是 Windows 10,使用 Visual Studio Community 2022 Preview(版本 17.3.0 Preview 1.1)。我的 Android 模拟器是 Pixel 5 - API 31。

我知道类似的问题已经被问过多次,但大多数都是专门针对 iOS 的,我找不到适用于 Android 的解决方案。我尝试重建我的解决方案,取消选中并重新选中配置管理器中的所有复选框,更新 Android SDK,将模拟器恢复出厂设置,然后重新启动 Adb 服务器,但这些都不起作用。

我还检查了我选择的模拟器,从外观来看,VS 2022 Preview 检测到我的模拟器效果很好, 如下图所示

在这个项目解决方案之外,VS 2022 Preview 可以毫无问题地运行 …

android maui visual-studio-2022

6
推荐指数
2
解决办法
1248
查看次数

.net maui 无法获取 Observable 集合中的更新字段以在绑定集合视图中更新

我正在尝试更新绑定到 CollectionView 的 ObservableCollection 中的实际字段。

CollectionView 在添加、删除项目时更新得很好,但如果我以编程方式更改列表中的项目则不会。

我从这篇文章中了解到,Observable 集合未更新,我需要实现 INotifyPropertyChanged。

我正在使用 CommunityToolkit.Mvvm 并希望这种魔法能够自动完成,但似乎没有。我没有 C# 知识,不知道如何做我想做的事。有人可以帮我吗:)

https://github.com/gfmoore/TestCollectionBinding有一个存储库

这是我当前的代码:

视图.MyItem.cs


namespace TestCollectionBinding.Views;

public class MyItem
{
  public string Name { get; set; }
  public string Device { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

ViewModels.MainPageViewModel.cs

using CommunityToolkit.Mvvm.ComponentModel;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using TestCollectionBinding.Views;

namespace TestCollectionBinding.ViewModels;

public partial class MainPageViewModel : ObservableObject
{
  [ObservableProperty]
  public ObservableCollection<MyItem> myItems = new()
  {
    new MyItem
    { …
Run Code Online (Sandbox Code Playgroud)

.net observablecollection maui

6
推荐指数
2
解决办法
8328
查看次数

使用 Blazor Web 视图进行 Blazor 混合 (MAUI) 身份验证

我正在尝试构建一个小型 Blazor Maui 应用程序示例,该应用程序使用身份服务器对用户进行身份验证。我试图达到可以从 Maui 应用程序登录的程度,然后每当我使用 blazorWebview 组件时,都可以访问用户的身份验证状态以进行身份​​验证决策。

目前,我在 Maui 应用程序的 razor 组件中设置了身份服务器登录流程,这完成了登录流程。

现在我希望能够将该登录状态/主体信息传递到 Blazor Web 视图以在组件中使用(其中一些在外部类库中引用)。有人有幸这样做过吗?

(另外,我已按照此处的 Microsoft 文档实现我自己的自定义身份验证状态提供程序,并将其添加到依赖项注入中,但没有说明如何将身份验证信息传递到 Blazor Web 视图)。

blazor blazor-webassembly maui maui-blazor .net-maui

6
推荐指数
1
解决办法
2935
查看次数

如何检测在 .NET MAUI 中按下任何键(KeyDown 事件处理程序)

我不确定它在 .NET MAUI 中是否可行。有人找到了检测按键(包括特殊键)的解决方案吗?

.net keypress onkeypress maui

6
推荐指数
1
解决办法
4295
查看次数

将 Visual Studio 升级到 17.4.0 Preview 1.0 后无法连接到 Mac

我已经连接到 MacBook Air 大约三个月了,以便使用 MAUI 进行开发。我刚刚将 Visual Studio 2022 从 17.3.0 Preview 3.0 升级到 17.4.0 Preview 1.0。现在,与 Mac 的连接已损坏 - 与我一直使用的连接相同。

错误消息是“无法验证 Xcode 许可证状态,因为在连接的 Mac 的默认位置上未找到 Xcode。为了构建和运行 iOS 应用程序,必须安装 Xcode 并使其正常工作,因此请检查 Xcode已安装,并且 iOS 设置下指定的路径正确。”

当然,Xcode 已安装,因为它已经工作了一段时间了。我发现较旧的帖子报告了相同的问题,并尝试了他们建议的修复,但无济于事。当我在 VS 设置中的 Xcode 路径中插入一个值时,它不会保存它。我找不到返回到 17.3.0 Preview 3.0 的方法,所以现在它已损坏,有人知道如何修复它吗?

更新

当我继续研究这个问题时,我发现了这一点。首先,如果我关闭 VS 并重新打开(无需打开我的项目)并进入“工具”...“选项”...Xamarin...iOS 设置,我可以 a) 在 Xcode 路径属性中放置一个路径,然后 b) 单击点击“与 Mac 配对”按钮并成功连接(或者它是这样说的)。所以设置看起来像这样:

在此输入图像描述

连接后,它显示我已与 Mac 配对,如下所示:

在此输入图像描述

请注意,如果我在启动 VS 时打开我的项目,它会自动尝试连接到 Mac,但会失败并出现上述错误。但在本例中,它显示它已连接到我的 Mac。因此,我打开我的项目,然后在“调试器”菜单上从 iOS 模拟器中选择一个模拟器。但它并没有显示 Mac 上 Xcode 提供的所有模拟器,而是只显示“模拟器”,如下所示:

在此输入图像描述

现在,如果我尝试开始调试应用程序,它会搅动几秒钟,然后停止并显示一条消息,显示“需要与 Mac 建立有效连接才能启动应用程序。请确保已建立连接并重试” ”。然后它显示我不再与我的 Mac 连接,如下所示:

在此输入图像描述

如果我选择我的 …

maui visual-studio-2022

6
推荐指数
1
解决办法
1775
查看次数