Я провел целый день, пытаясь понять, как создать простой образец на основе Maui. Репозиторий NativeLibraryInterop.
Я изо всех сил пытаюсь понять проблему, которая кажется довольно простой: как правильно использовать директивы using.
Я нашел этот репозиторий, этот пост в блоге и этот поверхностный YouTube. контент, все они пытаются дать введение в тему, но, к сожалению, даже не затрагивают, казалось бы, самую тривиальную отправную точку: как скомпилировать эту штуку и заставить ее работать!
Решение состоит из трех проектов: один и два шаблона привязки Maui: один для Android, другой для iOS/Mac.
Я начал с Android... Он все предполагает, что собственный проект Java следует просто скомпилировать с помощью Android Studio и вуаля, все должно работать нормально, и я смогу использовать такие «тонкие привязки» в классе ниже.
Код: Выделить всё
namespace MauiSample;
#if IOS || MACCATALYST
using NewBinding = NewBindingMaciOS.DotnetNewBinding;
#elif ANDROID
using NewBinding = NewBindingAndroid.DotnetNewBinding;
#elif (NETSTANDARD || !PLATFORM) || (NET6_0_OR_GREATER && !IOS && !ANDROID)
using NewBinding = System.Object;
#endif
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
// Call the native binding, which will append a platform specific string to the input string
var labelText = NewBinding.GetString("Community Toolkit");
newBindingSampleLabel.Text = "Hello, " + labelText;
}
async void OnDocsButtonClicked(object sender, EventArgs e)
{
try
{
Uri uri = new Uri("https://learn.microsoft.com/dotnet/communitytoolkit/maui/native-library-interop/get-started");
await Browser.Default.OpenAsync(uri, BrowserLaunchMode.SystemPreferred);
}
catch (Exception ex)
{
throw new Exception("Browser failed to launch", ex);
}
}
}
Код: Выделить всё
#if IOS || MACCATALYST
using NewBinding = NewBindingMaciOS.DotnetNewBinding;
#elif ANDROID
using NewBinding = NewBindingAndroid.DotnetNewBinding;
#elif (NETSTANDARD || !PLATFORM) || (NET6_0_OR_GREATER && !IOS && !ANDROID)
using NewBinding = System.Object;
#endif
Код: Выделить всё
#if IOS || MACCATALYST
using NewBinding = NewBinding.Android.Binding;
#elif ANDROID
using NewBinding = NewBinding.MaciOS.Binding;
#elif (NETSTANDARD || !PLATFORM) || (NET6_0_OR_GREATER && !IOS && !ANDROID)
using NewBinding = System.Object;
#endif
Подробнее здесь: https://stackoverflow.com/questions/793 ... ry-interop
Мобильная версия