Open rainit2006 opened 5 years ago
https://www.aruse.net/entry/2018/09/24/114606
Xamarinとは、iOS, Android などで動作するアプリケーションの開発を、C# で行うことができる開発ツールのことです。 Xamarin は、iOS, Android アプリケーションを開発するために、以下の3種類の機能を持っています。 Xamarin.iOS Xamarin.Android Xamarin.Forms Xamarin.iOS と Xamarin.Android でも、もちろん C# で開発を行えるのですが、画面とプラットフォーム独自の API についてはコードの共有ができないという課題がありました。 この課題を解決するのが、Xamarin.Forms です。
Xamarin の動作原理というと大げさですが、Xamarin は .NET Framework のクロスプラットフォーム版である Mono 上で動作します。Mono 上で動作することで、クロスプラットフォームでの動作を実現させています。
Android/iOS 端末にアプリをインストールする際、Mono も一緒にインストールされます。そのため、Mono がインストールされることで、小さなアプリケーションではアプリのサイズが大きくなることには注意が必要です。
Android の動作原理:
iOS の動作原理:
iOS の開発では、Apple が JIT でのコンパイルを規約で禁止しているため、Xamarin で C# のコンパイルを行った後、Xcode でネイティブコードに事前にコンパイルします(AOTコンパイル)。
この動作原理のために、iOS の開発では Mac が必須になるという訳ですね。
Xamarin Form调用各个平台方法
https://blog.csdn.net/qq_31403321/article/details/79479049
不同平台的运行代码:有时候需要在不同的平台上,运行不同的代码。
■在共享的目录中处理逻辑 在Xamarin.Forms中,有这些指令可以使用:#if, #elif, and endif。
#if __IOS__
using UIKit;
#elif __ANDROID__
using Android.OS;
#elif WINDOWS_APP || WINDOWS_PHONE_APP || WINDOWS_UWP
using Windows.Security.ExchangeActiveSyncProvisioning;
#endif
■使用各个平台的共同类 如果要实现在不同平台调用不同平台的类,则需要在每个平台的工程上都要新建一个共同类,类名、方法和命名空间,要完全一致。
■使用各个平台的类 一个库通常不能访问应用程序项目中的类,那么我们是可以使用DependencyService类来调用,各个平台的方法。 怎么做? 1.在Xamarin Forms平台上创建一个接口,让各个平台来实现该接口 2.每个平台实现了该接口后,必须注册在Dependency属性上 3.在Xamarin Forms中,使用DependencyService类的Get方法就可以调用了
显示Popup
在View类,ContentPage类里:
await DisplayAlert("Location", point.Latitude + "," + point.Longitude, "OK");
在非View类里:
Device.BeginInvokeOnMainThread(async () =>
{
await DisplayAlert("Location", point.Latitude + "," + point.Longitude, "OK");
});
官方网页: https://docs.microsoft.com/en-us/xamarin/get-started/