Пишем код

Заметки о .net разработке

Запуск Genymotion и Xamarin Android Player на Windows 10

without comments

Для всех у кого есть проблемы с запуском эмуляторов на Windows 10. Ссылка, которая мне помогла:

https://forums.xamarin.com/discussion/comment/139102/#Comment_139102
Цитата на всякий случай:

Step 1
If you previously installed Xamarin Player and already got the error message uninstall Xamarin Player and Virtual Box, then go to AppData/ and delete the complete XamarinPlayer directory.. At least make sure that under AppData there is NO longer any XamarinPlayer directory anymore available otherwise it won’t work.
Step 2
Download and install Xamarin Player But don’t start it yet after installation
Step 3
Download and install the latest Virtual Box version (5.x) just install it over the existing Virtual Box, it will clean and update automaticly the existing instance.
Step 4
Open Virtual Box and go to File->Preferences->Networking and go to the Virtual Host Only Tab.
Klik on edit for the one existing network adapter (the screwdriver) and make sure the it is set in the following way:

_Adapter;
IPv4 Address: 10.71.34.1
IPv4 Network Mask: 255.255.255.0

DHCP Server;
Enabled
Server Address: 10.71.34.2
Server Mask: 255.255.255.0
Lower Address Bound: 10.71.34.101
Upper Address Bound: 10.71.34.199_

After this save settings and exit Virtual Box
Step 5
Launch Xamarin Android Player and start installing virtual machines available for download.
Now it will find the correctly configured host only network adapter.

Written by Shaddix

Май 8th, 2016 at 1:33 пп

Posted in Без рубрики

Ускорение Change-Build-Run цикла на iOS (работает и на Android)

without comments

UPD: Чтобы это все работало в Xamarin Studio 6 необходимо установить плагин отсюда: Continuous.Client.MonoDevelop.mpack (собрано из guthub).

В последнее время наш iOS продукт достаточно разросся, и по разным причинам (обоснованным и не очень :)) состоит из ~20 проектов). Все это, вкупе с новыми версиями Xamarin очень негативно сказывается на времени сборки и запуска.
Ну а UI часть, как известно, требует частого перезапуска/пересборки ввиду множества мелких изменений.

Ждать по 1-2 минуты, чтобы проверить, как будет смотреться увеличенный на 1 пиксель отступ, слегка поднадоело, и было решено поискать решения.

Read the rest of this entry »

Written by Shaddix

Февраль 25th, 2016 at 4:07 пп

Posted in Без рубрики

Xamarin.Forms и сложности интеграции в Android приложения

with 4 comments

UPDATE: код обновлен для работы с Xamarin.Forms 1.3.4+

Говоря о недостатках Xamarin.Forms в предыдущей заметке, я среди прочего упомянул и сложность интеграции в существующие Android-проекты, а именно трудности так называемого «частичного использования» Xamarin.Forms в андроид-приложениях.
«Частичное использование», с моей точки зрения, это возможность с легкостью взять и добавить технологию в уже существующий проект, и реализовать с её помощью функционал какой-то части приложения. В случае Xamarin.Forms — реализовать какую-нибудь часть экрана/компонент с использованием этой UI-библиотеки (без полного переписывания приложения на новой технологии).
Интеграция в iOS, как я писал в предыдущей заметке, проходит достаточно безболезненно (за исключением проблемы с утечкой памяти, о решении которой я так же написал).

Интеграция в Андроид усложняется тем, что метода, аналогичного iOS’овскому .CreateViewController() здесь не существует.
Read the rest of this entry »

Written by Shaddix

Ноябрь 26th, 2014 at 5:19 пп

Posted in Без рубрики

Интеграция Xamarin.Forms в существующие проекты iOS (и утечки памяти)

without comments

Xamarin.Forms, о котором я недавно писал, отлично подходит для применения в новых приложениях и прототипирования нового функционала. Однако даже и в существующих больших приложениях могут появится новые требования, для реализации которых оптимально воспользоваться Xamarin.Forms.
Так получилось и в нашем случае, и в целом внедрение прошло гладко, кроме одной небольшой проблемы, обнаружившейся на самом последнем этапе. Об этой проблеме я и расскажу :)
Read the rest of this entry »

Written by Shaddix

Ноябрь 18th, 2014 at 11:00 дп

Posted in Без рубрики

Здравствуй, Xamarin.Forms, или пост, запоздавший на 4 месяца

with one comment

Черновик этой заметки был написан еще в июле, но по непонятным причинам забыт/отложен/отправлен на доработку. В свете свежеприобретенного опыта, я решил таки достать его из запасников истории и представить на свет божий :)

Меньше месяца назад, в июне 2014-го (да, заметка писалась еще в июле :)) ребята из Xamarin выпустили то самое, что от них ожидалось очень давно. Это — фреймворк для построения кроссплатформенного UI — Xamarin.Forms.
Такое решение — золотая середина между html-подобным интерфейсом, который выглядит ненативно на всех платформах, зато обладает на 100% общим кодом; и изначальным подходом Xamarin — где UI на каждой платформе полностью уникальный, отлично и естественно смотрится на всех устройствах, но требует разработки «с нуля» под каждую платформу.
Идея Xamarin.Forms в том, что многие базовые контролы пользовательского интерфейса так или иначе реализованы во всех системах (поддерживаются iOS/Android/WinPhone). Действительно, кнопки, надписи, поля ввода и переключатели есть везде. Xamarin выделил этот общий набор, собрал воедино все их свойства, и назвал эту абстракцию Xamarin.Forms. Из получившихся платформо-независимых классов можно строить интерфейс, а в результате под каждую платформу будет сгенерирован вполне естественный нативный UI с использованием «родных» компонентов.
Делать обзор функционала Forms через 5 месяцев после релиза слегка глуповато, так что я просто остановлюсь на некоторых плюсах и минусах, с которыми я успел столкнуться в процессе полу-продакшеновой практической эксплуатации Xamarin.Forms.
Read the rest of this entry »

Written by Shaddix

Ноябрь 15th, 2014 at 1:00 пп

Posted in Без рубрики

NoSQL против реляционных СУБД в задаче Entity-Attribute-Value

without comments

Задача хранения в базах данных схемы типа Объект — Множество Атрибутов — Значения атрибутов давно стала «классической».
В рамках реляционных СУБД, простейшее решение выглядит как-то так (anti-pattern detected!):

    public class Product
    {
        public int Id { get; set; }
        public List<propertyvalue> PropertyValues { get; set; }
        public string ProductTitle { get; set; }
        public decimal ProductPrice { get; set; }
    }

    public class Property
    {
        public int Id { get; set; }
        public string Title { get; set; }
    }

    public class PropertyValue
    {
        public int Id { get; set; }
        public Property Property { get; set; }
        public string Value { get; set; }
    }

И это не учитывая потенциальной типизации значений свойств (некоторые могут быть числовыми, другие — датой/временем и т.п.) и полагаясь на ORM для генерации таблицы связи много-ко-многим (Product/PropertyValue).
Read the rest of this entry »

Written by Shaddix

Август 6th, 2014 at 3:06 пп

Posted in Без рубрики

Oneliner: VerificationException: TaskAwaiter<> violates the constraint of type parameter ‘TAwaiter’ при использовании async в .net 4

without comments

Если при использовании async/await в .NET 4.0 вы видите что-то невнятное вроде

System.Security.VerificationException: Method System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[Cloud.API.TreeResult].AwaitUnsafeOnCompleted: type argument ‘Microsoft.Runtime.CompilerServices.TaskAwaiter`1[Cloud.API.TreeResult]’ violates the constraint of type parameter ‘TAwaiter’.

проверьте, во всех ли проектах одинаковая версия пакета Microsoft.Bcl (обновить всё до последней версии можно командой Update-Package Microsoft.Bcl).

Written by Shaddix

Июль 15th, 2014 at 10:51 дп

Posted in Без рубрики

Видеозапись семинара по итогам конференции DevCon-2014 в Rubius

without comments

Мы в Rubius очень давно не проводили семинары (с последнего, кажется, прошло уже 5 месяцев), поэтому решили восполнить пробел и поговорить о перспективах развития технологий и разработки на платформе Майкрософт.
Я кратко презентовал наиболее запомнившиеся мне моменты с конференции DevCon-2014, а потом мы достаточно бурно обсудили, что со всем этим технологическим счастьем делать и как дальше жить :)

Мои извинения за ужасный звук :)

P.S. презентацию выложу по запросу, но особой необходимости в ней я не вижу.

Written by Shaddix

Июль 6th, 2014 at 3:09 пп

Posted in Без рубрики

Universal App — кроссплатформенное счастье с #ifdef’ами и рефакторингом

without comments

Еще на конференции Build 2014 майкрософтовцы рассказали о новом типе проектов — Universal App. Естественно, на прошедшем DevCon 2014 я постарался разузнать побольше об этом типе проектов, и как он может помочь при разработке под iOS/Android.

Microsoft традиционно акцентирует внимание на том, что UniversalApp поможет повторно использовать кода между WinPhone и WinRT приложениями, не слишком афишируя то, что начиная с Xamarin 3.0 этот подход сработает и для iOS и Android приложений.
Давайте попробуем и посмотрим, что же у нас получится :)
Read the rest of this entry »

Written by Shaddix

Июнь 12th, 2014 at 1:09 пп

Posted in Без рубрики

DevCon 2014, или два дня вообще зря что ты делаешь зачем это нужно

without comments

Мемориз по ДевКону, или краткий ответ на вопрос «а стоит ли», который неизменно возникнет через полгода, перед DevCon 2015 :)
Read the rest of this entry »

Written by Shaddix

Июнь 12th, 2014 at 10:10 дп

Posted in Без рубрики