Xamarin рдХреЗ рд╕рд╛рде рдореЛрдмрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд┐рдХрд╛рд╕

рдкрд░рд┐рдЪрдп


рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдЬрд╝рд╛рдорд░реАрди рдиреЗ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЯреВрд▓рдХрд┐рдЯ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХреА, рд▓реЗрдХрд┐рди рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд░реВрд╕реА рдореЗрдВ рдХреЛрдИ рднреА рд▓реЗрдЦ рдирд╣реАрдВ рд╣реИрдВред рд╣реЛрдмреЗ рдкрд░ рдПрдХ рдЫреЛрдЯреА рд╕рдореАрдХреНрд╖рд╛ рджрд┐рдЦрд╛рдИ рдЧрдИ, рдЬреЛ рдХреЛрдбрд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рдереА, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдЧрдП рдереЗ, рд▓реЗрдХрд┐рди рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкрд░реЗ рдЪреАрдЬреЗрдВ рдирд╣реАрдВ рд╣реБрдИрдВред рдХреНрдпрд╛ рдЕрдлрд╝рд╕реЛрд╕ рд╣реИред рдЗрд╕ рдмрд╛рд░ рд╣рдо рдЗрд╕ рдХрд╖реНрдЯрдкреНрд░рдж рдЧрд▓рддрдлрд╣рдореА рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред

рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ


рдЬрд╝рд╛рдорд░реАрди рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧ-рдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдкрд░рд┐рдЪрд┐рдд рдбреЗрд╡рд▓рдкрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдЕрд▓рдЧ Xamarin Studio рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ MonoDevelop рдХрд╛ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдзрд┐рдХ рдЖрджрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдХрд╛рд╕ рдкрд░рд┐рд╡реЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (рдпрд╣ рдЖрдИрдкреИрдб рдФрд░ рдЖрдИрдлреЛрди рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ, рд╕рд╛рде рд╣реА рдУрдкрдирдЬреАрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ)ред рд╕рд╣реА рд╣реИ, рдЖрдкрдХреЛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ iOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдпрд╛ рддреЛ рдкрд░реАрдХреНрд╖рдг рдореЛрдб рдореЗрдВ рдпрд╛ рдЯреВрд▓рдХрд┐рдЯ рдХреЗ рд╡реНрдпрд╛рдкрд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рдЗрд╕рдХреА рд▓рд╛рдЧрдд рдкреНрд░рддрд┐ рд╡рд░реНрд╖ $ 999 рд╣реИред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╡рд╣реА API рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЗрд╢реА рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рде рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рдВрдЯреИрдХреНрд╕ C # рдореЗрдВ рд╣реЛрдЧрд╛, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, .NET рдлреНрд░реЗрдорд╡рд░реНрдХ, рд╕рд┐рдВрдереИрдЯрд┐рдХ рд╢реБрдЧрд░ рдФрд░ рдЕрдиреНрдп .NET рдмрдиреНрд╕ рдХреЗ рдореВрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред

Android рд╡рд┐рдХрд╛рд╕


рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдХрд╛ рдПрдХ рд╡рд░реНрдЧ рдФрд░ рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдПрдХреНрд▓рд┐рдкреНрд╕ рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, PascalCase рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХрд╛ рдирд╛рдо рдереЛрдбрд╝рд╛ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдмрд╣реБрдд рдЬрд▓реНрджреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рднреА рдЕрдВрддрд░ рд╣реИрдВред рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдореНрдмреЗрдбреЗрдб рд╡рд┐рдВрдбреЛ рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЗ рд▓рд┐рдП, рдЙрдирдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .AXML рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЧреНрд░рд╣рдг рдореЗрдВ .XMLред рдпрд╣ рдХрд╛рдлреА рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдЧреНрд░рд╣рдг рдореЗрдВ рд▓реЗрдЖрдЙрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдпрджрд┐ рдЧреНрд░рд╣рдг рдХрд╛ рд╡рд┐рдВрдбреЛ рдбрд┐рдЬрд╛рдЗрдирд░ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рд╣реИред

рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рдВрдбреЛ рдбрд┐рдЬрд╛рдЗрдирд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЕрд╕рд╣рдЬ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдзреАрдореА рдЧрддрд┐ рд╕реЗ, рдпрд╣ рдЕрдХреНрд╕рд░ рдкреВрд░реЗ рдЖрдИрдбреАрдИ рдХреЛ рдиреАрдЪреЗ рд▓рд╛рддрд╛ рд╣реИ, рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдПрдХреНрд╕рдПрдордПрд▓ рджреГрд╢реНрдп рдФрд░ рдпреВрдЖрдИ рдХреЗ рдмреАрдЪ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреИрд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣рд╛рдВ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╢рд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЬрдирдмрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЧреНрд░рд╣рдг рдореЗрдВ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдЧреНрд░рд╣рдг рдореЗрдВ рд▓реИрдкрдЯреЙрдк рд╕реНрдХреНрд░реАрди рдкрд░ рд░рдЦреА рдЧрдИ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдбрд┐рдЬрд╛рдЗрдирд░ рдЗрд╕реЗ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ, рдорд╣рд╕реВрд╕ рдХрд┐рдП рдЧрдП рдЯрд┐рдк рдкреЗрди рд╕реНрд╡рд╛рдж рдФрд░ рд░рдВрдЧ рдореЗрдВ рднрд┐рдиреНрди рд╣реИрдВред

рдХреНрд░рд┐рдпрд╛рдПрдБ

Android рдХреЗ рд▓рд┐рдП рдореЛрдиреЛ рдХреЗ рд▓рд┐рдП C # рдХреЛрдб рдЬрд╛рд╡рд╛ рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд╣реИред
namespace XamarinDemo.Android { [Activity(Label = "XamarinDemo.Android", MainLauncher = true, Icon = "@drawable/icon")] public class MainActivity : Activity { int count = 1; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); Button button = FindViewById<Button>(Resource.Id.MyButton); button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); }; } } } 

рдЕрдВрддрд░ рдЬреЛ рддреБрд░рдВрдд рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ:


рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ

рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддрд░рд╣, FindViewById() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдмрд╣реБрдд рдЦреБрд╢ рдерд╛, рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд╡рд╕реНрддреБ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╕реА-рдХрд╛рд╕реНрдЯ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╢реНрд░реЛрддрд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп, рдпрд╛ рдмрд▓реНрдХрд┐, рдЙрдирдХреЗ рдЕрд▓рд╛рд╡рд╛, рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рд╢реНрд░реЛрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, .NET рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдИ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 Button button = FindViewById<Button>(Resource.Id.MyButton); button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); }; button.Click += (o, e) => { Toast.MakeText(this, string.Format("{0} clicks!", count++), ToastLength.Long).Show(); }; 

рдирд╣реАрдВ рд╕рднреА рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рд░рд╕рдкреВрд░реНрдг рд╣реИрдВред рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, View.ViewTreeObserver.GlobalLayout рдИрд╡реЗрдВрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереА, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп - = рдСрдкрд░реЗрдЯрд░ рдиреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЕрдХреНрд╖рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред рд╣рд╛рдВ, рд╡реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдмрдВрдж рдирд╣реАрдВ рд╣реБрдПред IOnGlobalLayoutListener рдХрд╛ рдЙрдкрдпреЛрдЧ IOnGlobalLayoutListener ред

.NET рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬрд╛рд╡рд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

Android рдХреЗ рд▓рд┐рдП рдореЛрдиреЛ рдореЗрдВ C # рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдореМрдЬреВрджрд╛ JAR рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ: рдЬрд╛рд╡рд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реАред
JAR рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рдореНрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк JAR рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо C # рдореЗрдВ рдФрд░ рдЬрд╛рд╡рд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдереЛрдбрд╝рд╛ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Java рдХреЛрдб рд╕реЗ com.example.androiddemolib рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ Com.Example.Androiddemolib рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЕрд░реНрдерд╛рдд рдпрд╣ PascalCase рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛)ред
рдЬрд╛рд╡рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдЪреНрдЫреЗ рдирд┐рд░реНрджреЗрд╢ рдпрд╣рд╛рдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред

рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ

рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Android рдХреЗ рд▓рд┐рдП рдореЛрдиреЛ Mono.Data.Sqlite рдирд╛рдо рд╕реНрдерд╛рди Mono.Data.Sqlite (SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ System.Data.SqlClient (Microsoft SQL рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдХрд╛ System.Data.SqlClient рдХрд░рддрд╛ рд╣реИред System.Data.SqlClient рдиреЗрдорд╕реНрдкреЗрд╕ рдХреНрд▓рд╛рд╕реЗрд╕ рдХреЗрд╡рд▓ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓реНрд╕ рдХреЗ рдмрд┐рдЬрдиреЗрд╕ рдПрдбрд┐рд╢рди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ рдкрд░ рд░реИрдкрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП sqlite-net, рдЬрд┐рд╕рдореЗрдВ API рдХрд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдЙрдкрд▓рдмреНрдз рд╣реИред
рдПрдХ рд╕реБрд▓рдн рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рд╕рдм рдХреБрдЫ рдбреЗрд╕реНрдХрдЯреЙрдк рдкреАрд╕реА рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рдорд╛рди рд╣реИ:
 namespace XamarinDemo.Android { [Activity(Label = "XamarinDemo.Android", MainLauncher = true, Icon = "@drawable/icon")] public class MainActivity : Activity { SqliteConnection GetConnection(string path) { SqliteConnectionStringBuilder builder = new SqliteConnectionStringBuilder(); if (!File.Exists(path)) { FileInfo info = new FileInfo(path); if (!Directory.Exists(info.Directory.FullName)) { Directory.CreateDirectory(info.Directory.FullName); } SqliteConnection.CreateFile(path); } builder.DataSource = path; return new SqliteConnection(builder.ToString()); } protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); try { string path = GetDatabasePath("xamarindemo.sqlite").Path; SqliteConnection connection = GetConnection(path); connection.Open(); SqliteCommand command = connection.CreateCommand(); command.CommandType = CommandType.Text; command.CommandText = "CREATE TABLE IF NOT EXISTS DemoTable(" + "id INTEGER AUTO_INCREMENT PRIMARY KEY NOT NULL" + ", name VARCHAR(32))"; command.ExecuteNonQuery(); connection.Close(); } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e.ToString()); } } } } 


IOS рд╡рд┐рдХрд╛рд╕



рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ

рдХреЛрдб рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдирд╛ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдореЗрдВ рд╕рдорд╛рди рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд▓рдЯрдХрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ - рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреА рдорджрдж рд╕реЗред рдЖрдк рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ-рд╕реА рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
 namespace XamarinDemo.iOS { public class MyViewController : UIViewController { UIButton button; тАж public MyViewController() { } public override void ViewDidLoad() { base.ViewDidLoad(); тАж button = UIButton.FromType(UIButtonType.RoundedRect); тАж button.AddTarget(this, new Selector("ButtonTouchInside"), UIControlEvent.TouchUpInside); тАж button.TouchUpInside += (object sender, EventArgs e) => { button.SetTitle(String.Format( "clicked {0} times", numClicks++), UIControlState.Normal); }; тАж View.AddSubview(button); } [Export("ButtonTouchInside")] void OnButtonTouchInside() { Console.WriteLine("Hello!"); } } } 


рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдЬрд╝рд╛рдорд░реАрди рдЖрдИрдУрдПрд╕ рдореЗрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП, рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ - рдЖрдИрдУрдПрд╕ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд╕реНрдЯреЗрдЯрд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЗрдВ рдореБрдЦреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, C # рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореВрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕реБрд▓рдн рд╣реИ ред

рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ

рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, iOS рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд╕рдорд╛рди рдирд╛рдорд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдПрдкреАрдЖрдИ, рдХреНрд░рдорд╢рдГ, рд╕рдорд╛рди рд╣реИред рд╡рд┐рд╡рд░рдг рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдВрддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Android рдореЗрдВ SQLite рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрде рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрдкреАрдЖрдИ рдХреЙрд▓ рд╣реИ:
 string path = GetDatabasePath("xamarindemo.sqlite").Path; 

IOS рдореЗрдВ, рдЖрдкрдХреЛ рдорд╛рдирдХ .NET рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 string path = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.Personal), "xamarindemo.sqlite"); 


Visual Studio рд╕реЗ рджреВрд░рд╕реНрде рдЕрдиреБрдкреНрд░рдпреЛрдЧ iOS рдбрд┐рдмрдЧрд┐рдВрдЧ

Xamarin 2.0 рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рд╕реАрдзреЗ iOS рдореЛрдмрд╛рдЗрд▓ рдРрдкреНрд╕ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЗрд╕реЗ рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ Xcode, iOS SDK рдФрд░ Xamarin Studio рдХреЗ рд╕рд╛рде рдПрдХ рдореИрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдЙрдкрд▓рдмреНрдз рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдХреА рд╕реВрдЪреА рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ iOS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓рддреЗ рд╣реИрдВред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рдорд╛рди рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдЖрднрд╛рд╕реА рдорд╢реАрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред рдпрджреНрдпрдкрд┐ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдореИрдХ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рд░рдг рдпрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЕрднреА рддрдХ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдпрд╣ рднреА рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдПрдХ рдореИрдХ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реАрдПрдирд╕реА рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИред

рдХреНрд░реЙрд╕-рдХреНрд▓рд╛рд╕ рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА


рдЬрд╝рд╛рдорд░реАрди рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрдИ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдХреЛрдб рдпрд╛ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ)ред рдРрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкреЛрд░реНрдЯреЗрдмрд▓ рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдкреАрд╕реАрдПрд▓) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .NET рд░рдирдЯрд╛рдЗрдо рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдЯреНрд░рд┐рдкреНрдб-рдбрд╛рдЙрди рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрднреБрдд рдЙрдкрдХрд░рдг рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдорд╣рддреНрд╡ рдмрд╣реБрдд рдХрдард┐рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдирд╛ рд╕рд░рд▓ рднреА рдирд╣реАрдВ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, Visual Studio рдореЗрдВ, рдЖрдк PCL рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ Android рдФрд░ iOS рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рддреБрд░рдВрдд рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\Profile104\SupportedFrameworks рдлрд╝реЛрд▓реНрдбрд░ x64 рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдпрд╛ C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\Profile104\SupportedFrameworks рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\Profile104\SupportedFrameworks C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.0\Profile\Profile104\SupportedFrameworks рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдПред
Android рдлрд╝рд╛рдЗрд▓ MonoAndroid, рд╕рдВрд╕реНрдХрд░рдг = v1.6 + .xml
 <?xml version="1.0" encoding="utf-8"?> <Framework DisplayName="Mono for Android" Identifier="MonoAndroid" Profile="*" MinimumVersion="1.6" MaximumVersion="*" /> 

iOS VSMonoTouch рдлрд╝рд╛рдЗрд▓ , рд╕рдВрд╕реНрдХрд░рдг = v1.0 + .xml
 <?xml version="1.0" encoding="utf-8"?> <Framework DisplayName="VS MonoTouch" Identifier=".NETFramework" Profile="*" MinimumVersion="1.0" MaximumVersion="1.0" /> 

рдЗрди рджреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рдХреЛ рдирдП рдкреАрд╕реАрдПрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЗрди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЛ рдкреНрд░реЙрдкрд░реНрдЯреАрдЬ -> рд▓рд╛рдЗрдмреНрд░реЗрд░реА -> рд▓рдХреНрд╖реНрдп рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдпрд╣ рд╕рднреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рдЖрдк рдПрдХ рдкреАрд╕реАрдПрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ Xbox 360 рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди 7 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ (рд▓реЗрдХрд┐рди рдЖрдк рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди 7.5+ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред Xbox рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд▓рд┐рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрджрд╛ PCL рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╛, рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, Microsoft рд╕реЗ рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо (Xbox 360 рд╕рд╣рд┐рдд) рдХреЛ рдПрдХ PCL рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрдВ, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рдХреЗрд╡рд▓ iOS рдФрд░ Android рдЫреЛрдбрд╝реЗрдВред

рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рднреА рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдПрдХ рдкреАрд╕реАрдПрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдорд╛рдзрд╛рди рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗрдЧрд╛ рдЕрдЧрд░ рдЗрд╕реЗ рдУрдПрд╕ рдПрдХреНрд╕ рдХреЗ рддрд╣рдд рдПрдХреНрд╕рд░рд╛рдорд┐рди рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрдЧреА рдФрд░ рдПрдХ рд╕рдВрджреЗрд╢ (рд╕рдХреНрд░рд┐рдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдирд╣реАрдВ) рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рдорд╛рдзрд╛рди рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╣рдЯрд╛рдХрд░ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдХрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдирдИ рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдФрд░ C # 5 рд╕рдорд░реНрдерди


рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, рдлрд╝рд╛рдЗрд▓реЛрдВ, рдбреЗрдЯрд╛рдмреЗрд╕, рдиреЗрдЯрд╡рд░реНрдХ, рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд▓рдВрдмреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд╛рде, рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреНрд░реАрдо рдореЗрдВред C # 5 рдореЗрдВ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рд╣реИ async / рдкреНрд░рддреАрдХреНрд╖рд╛ ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдореЛрдиреЛрдЖрдЪ рдХреЗ рд▓рд┐рдП рдореЛрдиреЛ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдпреЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдХрдИ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрдирдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд╡реИрд▓рд╛рдЗрдЯ-рдиреЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдВрдХреЗрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдпреЗ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдореЗрдВ Xamarin рдХреЗ C # 5 рдХреЗ рд╕рдВрдХреНрд░рдордг рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП ред

рдЕрддрд┐рд░рд┐рдХреНрдд рдШрдЯрдХ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп


рдЬрд╝рд╛рдорд░реАрди рдиреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреВрд▓ рдмреЗрдЪрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдШрдЯрдХреЛрдВ рдХреЛ рдмреЗрдЪрдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕реНрдЯреЛрд░ рдЦреЛрд▓рд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдХрдИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрдЯреЛрд░ рдкреЗрдб рдФрд░ рдлреНрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдереАрдо рджреЛрдиреЛрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдХреНрдд Xamarin.Auth , Xamarin.Social рдФрд░ Xamarin.Mobile рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред рдЗрд╕ рд╕реНрдЯреЛрд░ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред

рдЕрдкреНрд░рд┐рдп рдХреНрд╖рдг


рд╕рдорд╕реНрдпрд╛ рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рд╕реЗ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ:


рд╕реБрдЦрдж рдХреНрд╖рдг




рдирд┐рд╖реНрдХрд░реНрд╖


Xamarin рдЯреВрд▓рдХрд┐рдЯ рд╣рд╛рдБ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдпрд╛ рдпрджрд┐ рд╡рд┐рдХрд╕рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдпреЛрдЬрдирд╛рдмрджреНрдз рд▓рд╛рдн $ 2k рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ Xamarin SDK рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдХреЛрдб рдкрд░ рджреЛрд╣рд░реЗ рдХрд╛рд░реНрдп рд╕реЗ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред

рджреВрд╕рд░реА рдУрд░, Indy рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП $ 1k рдХреА рдХреАрдордд, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЕрддреНрдпрдзрд┐рдХ рд▓рдЧрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЦреБрдж рдХреЛ рдЬрд╛рдирдирд╛ рдФрд░ / рдпрд╛ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рд╣реИ, рдРрд╕реЗ рдХреАрдбрд╝реЗ рд╣реИрдВ рдЬреЛ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдореЛрдб рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдзреАрдорд╛ рдХрд░ рд╕рдХрддреА рд╣реИред

рдХреБрдЫ рдмреЗрд╣рддрд░реАрди рд▓рд┐рдВрдХ!




UPD: рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рд▓рд╛рдЧрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрддрд░-рдЙрддреНрддрд░ рд╕реЗ рд╕реНрдкрд╖реНрдЯрддрд╛ :
рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЕрд╕реАрдорд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдХ рд╕рд╛рд▓ рдХрд╛ рдореБрдлреНрдд рдЕрдкрдбреЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд╕рдорд░реНрдерди рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рдпрд╣рд╛рдБ рдЙрдирдХрд╛ рдЬрд╡рд╛рдм рд╣реИ
рдЖрдкрдХрд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╕реНрдерд╛рдпреА рд╣реИред рдирдП рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╣рд░ рд╕рд╛рд▓ рдирд╡реАрдиреАрдХрд░рдг рдЦрд░реАрджрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In172121/


All Articles