рдкрд░рд┐рдЪрдп
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдЬрд╝рд╛рдорд░реАрди рдиреЗ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЯреВрд▓рдХрд┐рдЯ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХреА, рд▓реЗрдХрд┐рди рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд░реВрд╕реА рдореЗрдВ рдХреЛрдИ рднреА рд▓реЗрдЦ рдирд╣реАрдВ рд╣реИрдВред рд╣реЛрдмреЗ рдкрд░ рдПрдХ рдЫреЛрдЯреА
рд╕рдореАрдХреНрд╖рд╛ рджрд┐рдЦрд╛рдИ рдЧрдИ, рдЬреЛ рдХреЛрдбрд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рдереА, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рдмрд╛рдд
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ
рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдЧрдП рдереЗ, рд▓реЗрдХрд┐рди рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкрд░реЗ рдЪреАрдЬреЗрдВ рдирд╣реАрдВ рд╣реБрдИрдВред рдХреНрдпрд╛ рдЕрдлрд╝рд╕реЛрд╕ рд╣реИред рдЗрд╕ рдмрд╛рд░ рд╣рдо рдЗрд╕ рдХрд╖реНрдЯрдкреНрд░рдж рдЧрд▓рддрдлрд╣рдореА рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ
рдЬрд╝рд╛рдорд░реАрди рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧ-рдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдкрд░рд┐рдЪрд┐рдд рдбреЗрд╡рд▓рдкрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдЕрд▓рдЧ 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++); }; } } }
рдЕрдВрддрд░ рдЬреЛ рддреБрд░рдВрдд рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ:
- рдХрд┐рд╕реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ рдХреБрдЫ рднреА рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдиреЛрдЯреЗрд╢рди [рдЧрддрд┐рд╡рд┐рдзрд┐] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдХрд┐рд╕реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, [рдЧрддрд┐рд╡рд┐рдзрд┐] рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП MainLauncher рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рдПрдХреНрд╢рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред android.intent.action.MAIN рдФрд░ рд╢реНрд░реЗрдгреА = android.intent.category.LAUNCHER рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ
- рдЧрддрд┐рд╡рд┐рдзрд┐ рдЬреАрд╡рди рдЪрдХреНрд░ рдХреА рдореБрдЦреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ (рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА рд╡рд┐рдзрд┐рдпрд╛рдБ) рдкрд╛рд╕реНрдХрд▓рдХреЗрд╕ рдореЗрдВ рдирд╛рдорд┐рдд рд╣реИрдВред
рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ
рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддрд░рд╣,
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 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рдореНрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рд╕рдорд╛рдзрд╛рди рдореЗрдВ Java рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдБред
- рд╡рд╛рдВрдЫрд┐рдд JAR рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЬрд╛рд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреЗрдВ (JAR рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ AndroidManifest.xml рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдХрдИ рдЕрдкреНрд░рд┐рдп рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдпрд╣рд╛рдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ)ред
- рдПрдВрдмреЗрдбреЗрдб рдЬрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рдПрдХреНрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред
- рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рдЬрд╛рд╡рд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк 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 # рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореВрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:
- Xcode рдореЗрдВ рдПрдХ рд╕реНрдЯреИрдЯрд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред
- рдпрджрд┐ рдЖрдк рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ C # рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдерд┐рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЖрдкрдХреЛ i386 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ Valid рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
- рд╡рд╛рдВрдЫрд┐рдд рддрд░реНрдХ рд▓рд┐рдЦреЗрдВ (рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирд┐рд░реНрдпрд╛рдд рд╡рд░реНрдЧ рд╣реИ):
@interface iOSDemoClass : NSObject - (NSInteger) addData: (NSInteger) value1 andOtherValue: (NSInteger) value2; @end тАж @implementation iOSDemoClass -(NSInteger) addData: (NSInteger) value1 andOtherValue: (NSInteger) value2 { return value1 + value2; } @end
- Xcode рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдВрдж рдХрд░реЗрдВ
- рдЖрд╡рд╢реНрдпрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рд╕реНрдереИрддрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣):
xcodebuild -project iOSDemoLib.xcodeproj \ -target iOSDemoLib -sdk iphonesimulator \ -configuration Release clean build xcodebuild -project iOSDemoLib.xcodeproj \ -target iOSDemoLib -sdk iphoneos -arch armv7 \ -configuration Release clean build
- рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдХрдИ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдПрдВ:
lipo -create -output ../iOSDemoLib.Binding/libiOSDemoLib.a ../libiOSDemoLib-i386.a ../libiOSDemoLib-iphone-armv7.a
- C # рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдПрдХ iOS рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ рдПрдХ рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рд╕реНрдЯреИрдЯрд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛрдбрд╝реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, [libname] .linkwith.cs рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓рд┐рдВрдХ рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИрдВ:
[assembly: LinkWith ("libiOSDemoLib.a", LinkTarget.Simulator | LinkTarget.ArmV7, ForceLoad = true, Frameworks = "Foundation")]
- ApiDefinition.cs рдлрд╝рд╛рдЗрд▓ (рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЧрдИ) рдореЗрдВ, рдиреЗрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рд▓рд┐рдЦреЗрдВ (рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЬрдЯрд┐рд▓ рд╡рд┐рдзрд┐ рдХреЗ рдирд╛рдо рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХреЙрд▓реЛрди рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдореЗрдВ рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрд░реНрдерд╛рдд, рджреЛ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдзрд┐ рдореЗрдВред рдкреИрд░рд╛рдореАрдЯрд░ рджреЛ рдХреЙрд▓реЛрди рд╣реЛрдВрдЧреЗ):
namespace iOSDemoLib.Binding { [BaseType (typeof(NSObject))] interface iOSDemoClass { [Export("addData:andOtherValue:")] int AddDataAndOtherValue(int value1, int value2); } }
- рдЬрд┐рд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЖрдк рд▓рд╛рдпрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ iOS рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдиреНрджрд░реНрдн рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
- рдЗрдХрдЯреНрдард╛ рдХрд░реЛ, рднрд╛рдЧреЛ, рдЦреБрд╢ рд░рд╣реЛред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕реБрд▓рдн
рд╣реИ ред
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 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 рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред рдЗрд╕ рд╕реНрдЯреЛрд░ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдЕрдкреНрд░рд┐рдп рдХреНрд╖рдг
рд╕рдорд╕реНрдпрд╛ рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рд╕реЗ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ:
- рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбреАрдмрдЧ рдХрд░рддреЗ рд╕рдордп рднрдпрд╛рдирдХ рдмреНрд░реЗрдХ, рдЬрдм рдХреЛрд░ рдЖрдИ 7 рдФрд░ 8 рдЬреАрдмреА рд░реИрдо рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рдлреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдорд╢реАрди рдкрд░, рдЬрдм рдЖрдк рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдкрд░ рд░реБрдХрддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 10-15 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЬрдорд╛ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕реЗ рдбрд┐рдмрдЧрд░ рдХреЗ рд╣рд░ рдЪрд░рдг рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
- рдбрд┐рдмрдЧрд┐рдВрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐, рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдЬреБрдбрд╝реЗ рдХреБрдЫ рдЙрдкрдХрд░рдг (рдЬреЛ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрджрдм рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЬрд┐рд╕ рдкрд░ рдЧреНрд░рд╣рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд╛рддрд╛ рд╣реИ)
- рдбрд┐рдмрдЧрд░ рдХреА рдордирдорд╛рдиреА рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
- рд▓реЗрдЦ рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рд╛рдордЧреНрд░реА рдХреА рдХрдореА (рд╣рд╛рдБ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдХреБрдЫ рд╕рд╛рдордЧреНрд░рд┐рдпрд╛рдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рднреА рд▓реЛрдХрдкреНрд░рд┐рдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ)
- рдмрдЧ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рдЬрд┐рд╕реЗ рдЖрдк SUDDENLY рд╕реАрдЦрддреЗ рд╣реИрдВ! рдордВрдЪ рдкрд░ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рджред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рд╣реА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдордВрдЪ рдкрд░, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛рдлреА рд╣рдВрд╕рдореБрдЦ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВред
- рдмрд┐рдЬрдиреЗрд╕ рдПрдбрд┐рд╢рди рдХреА рдХреАрдордд рдмрд╣реБрдд рд╣реА рдХрд╛рдЯрдиреЗ рд╡рд╛рд▓реА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╡рд░реНрд╖ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрд╕реЗрдВрд╕, рдФрд░ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ (рдПрдХ рд╕рд╛рде рдХрдИ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЦрд░реАрджрддреЗ рд╕рдордп рд╕реНрдерд┐рддрд┐ рдереЛрдбрд╝реА рд╕реА рдЫреВрдЯ рдЬрд╛рддреА рд╣реИ)ред
рд╕реБрдЦрдж рдХреНрд╖рдг
- рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрдИ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╛ рдХрдИ рдХрд╛рд░реНрдпрд╕реНрдерд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЦрд░реАрджрддреЗ рд╕рдордп, рдПрдХ рдЫреВрдЯ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИред
- рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рд╛рде, рдЬреЛ async \ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛, рд╡рд┐рдХрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЙрдирдХреЗ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
Xamarin рдЯреВрд▓рдХрд┐рдЯ рд╣рд╛рдБ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рдПрдХ рд╡рд░реНрд╖ рдореЗрдВ рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдпрд╛ рдпрджрд┐ рд╡рд┐рдХрд╕рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдпреЛрдЬрдирд╛рдмрджреНрдз рд▓рд╛рдн $ 2k рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ Xamarin SDK рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдХреЛрдб рдкрд░ рджреЛрд╣рд░реЗ рдХрд╛рд░реНрдп рд╕реЗ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред
рджреВрд╕рд░реА рдУрд░, Indy рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП $ 1k рдХреА рдХреАрдордд, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЕрддреНрдпрдзрд┐рдХ рд▓рдЧрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЦреБрдж рдХреЛ рдЬрд╛рдирдирд╛ рдФрд░ / рдпрд╛ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рд╣реИ, рдРрд╕реЗ рдХреАрдбрд╝реЗ рд╣реИрдВ рдЬреЛ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдореЛрдб рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдзреАрдорд╛ рдХрд░ рд╕рдХрддреА рд╣реИред
рдХреБрдЫ рдмреЗрд╣рддрд░реАрди рд▓рд┐рдВрдХ!
UPD: рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рд▓рд╛рдЧрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдЙрддреНрддрд░-рдЙрддреНрддрд░ рд╕реЗ
рд╕реНрдкрд╖реНрдЯрддрд╛ :
рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЕрд╕реАрдорд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдХ рд╕рд╛рд▓ рдХрд╛ рдореБрдлреНрдд рдЕрдкрдбреЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд╕рдорд░реНрдерди рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рдпрд╣рд╛рдБ рдЙрдирдХрд╛ рдЬрд╡рд╛рдм рд╣реИ
рдЖрдкрдХрд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╕реНрдерд╛рдпреА рд╣реИред рдирдП рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╣рд░ рд╕рд╛рд▓ рдирд╡реАрдиреАрдХрд░рдг рдЦрд░реАрджрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред