Как стать автором
Обновить

Комментарии 77

Пользуюсь тулзами уже несколько месяцев, самое отвртительное это отладчик, падает, глючит, вешает приложение, постоянно нужно делать какие то телодвижения что бы запустить отладку заново… рекламируют хорошо а вот на деле всё как то не очень…
по моим наблюдениям, это зависит от девайса и от версии андроида. я, впрочем, наблюдал другую беду — эксепшены не всегда отладчиком ловятся, иногда улетают в debug log и всё.
Используем Galaxy Nexus (с гугловой поддержкой, нативный андроид 4.2.2), Samsung Galaxy SII, ZTE Skate, везде ведёт себя одинаково, через несколько запусков начинает отваливаться отладчик, и если например в брекпоинте нажать стоп, то приложение не убивается. По поводу эксепшенов да, и брекпоинты себя так же ведут если их ставить после запуска дебага… вообщем косяк на косяке если начинаешь плотно работать, я огорчён кач-вом продукта Xamarin :(, такое чувство что продают недоделку.
на нексусе и самсунге отладчик отсыхает, на xperia ray и motorola xoom — не отсыхает.

а что саппорт, кстати, говорит? мои несколько багрепортов они уже пофиксили. с пираткой в этом смысле тяжелее.
У нас куплена лицензия, но в саппорт с этой проблемой я не обращался, меня больше беспокоят не сами отваливания сколько подвисания + не убивание процесса программы когда я жму стоп в отладке :)
пишите в саппорт, там вполне вменяемый народ. подвисаний у меня не было, но возможно это из-за галочки «завершать активити при их деактивации» в developer settings.
Та же история у меня была при разработке под Windows CE на нескольких девайсах. Дошло до того, что я вообще убрал кнопку «стоп» с тулбара студии, потому что после каждого стопа приходилось перезагружать девайс. Другие девайсы и родной CE эмулятор вели себя корректно.
Это самое отвратительно когда средства разработки ведут себя подобным образом -_-
Какая версия IDE?

Я испытываю теже проблемы и с Windows Phone разработкой под VS 2012, поэтому может быть дело не в интеграции.
Никогда не испытывал проблем с отладкой под WP.
Возможно разного уровня приложения. Но под WP7 такого не было, когда появился WP8 и VS2012 соответственно появились странные глюки — при проигрывании видео, если поставить брейкпоинт при отдаче видео-фрейма из MediaStreamSource, то приложение начинает тормозить, но при этом студия не получает управления, если убрать брейкпоинт — все нормально. Также бывает, после входа в брейкпоинт не показываются значения локальных переменных.
Вы не указали версию, я имел ввиду WP7 и его SDK. С WP8 и 7.8 не работал.
Замарин сейчас активно работает над собственной Xamarin Studio. Будем надеяться, что в ней отладчик будет стабильнее.
Не известно примерных сроков на релиз?
Уже в закрытой бете, раздают доступ. Подробности на их блоге, мне недели за 2 приглашение пришло.
Вы меня прям заинтриговали!
Но видимо пока это все большая-большая тайная, единственное что находится в поиске, это партнерское видео про компонент Pixate.

Интерфейс кстати весьма и весьма!
Прям слюньки потекли :D
Это всего лишь обновленный MonoDevelop. Последний можно использовать и сейчас, но глюков там не меньше.
Почти полгода уже пишу для Galaxy Note, никаких проблем с отладчиком не замечал… Единственное что было — это глюк с деплойментом, который решался полной перекомпиляцией проекта. Но это единичные случаи.
Кстати говоря, забыл добавить про недостатки этого фреймворка: помимо ситуации описанной постом выше прослеживается влияние джавы на который и происходит перевод кода при компиляции. Особо это заметно при работе с потоками- более жесткие условия доступа к переменным, вследствие чего иногда на устройстве с андроидом генерятся джава исключения которых бы не гинерилось при запуске кода на родном пк.
> джавы на который и происходит перевод кода при компиляции

см. habrahabr.ru/post/169467/#comment_5873897 — монодроид носит свой рантайм. но дополнительную сложность и глюкавость прослойки вносят, согласен.
«Разработка приложений для Android с C#» — зачем?
Я бы на вашем месте убрал бы AbsoluteLayout из списка.
Во первых его точно нельзя советовать к использованию, во вторых он был depricated еще аж с API 3.
А разве есть ещё лайаут с точным позиционированием по координатам X,Y? Например при добавлении текстовой легенды к графику я использовал именно абсолют лайаут для движения легенды и для добавления текста в нужное место из кода.
Практически любую разметку можно сделать используя: FrameLayout, LinearLayout и RelativeLayout.
При это не хардкодируя разметку из кода.
Статическую да, динамическую в любом случае придётся хардкодить и не самым красивым образом :(
Как раз речь о динамической, по этой причине в андроиде выкинули статический контейнер.
Если у вас проблемы с конкретной разметкой, приведите пример. Пишите в ПМ или здесь (не знаю на сколько актуально это будет в этой теме), обсудим.
Я наверное немного не корректно выразился. Под динамичностью я имел ввиду не адаптивность к разным разрешениям, а именно происходящее на экране, как например график. Кстати не посоветуете как улучшить производительность при отрисовке большого количества объектов?
НЛО прилетело и опубликовало эту надпись здесь
Дебагер тут не причём, вплане и без дебагера туповато. Тогда остаётся последнее, но это наверное уже в следующей версии. :)
Хардкодить через OnDraw же? Я правильно понял?
Сложно сказать не зная деталей. А график у вас рисуется на канве или состоит из view?
По быстрому что удалось найти из примеров, это эквалайзер из cyanogenmod, исходник можно посмотреть тут: EqualizerSurface
Картинка
Полученный график очень специфичен, поэтому использовать библиотеки графиков не получилось.
Сейчас график строится из view, что довольно лагуче на девайсах со слабым процом. Я так понимаю что если перестроить его через OnDraw то будет гораздо быстрее? Просто работы по его перестроению довольно много, не хотелось бы спускать время в унитаз если это не даст результата :(
Должно быть быстрее. Самое простое это взять готовую библиотеку и проверить, а там будет видно стоит оно того или нет. Даже если они не подойдут, как минимум можно их рендер взять и сверху что то докрутить. Всяко проще чем писать самим.

Раз у вас на вьюшках график, то нужно удостоверится что:
1. view кешируются
2. view которые не видно на экране не создаются
Что бы не было так, что вы сразу залпом создали 600 view даже те которые не видны и засунули их в ScrollView, а потом тупо их все кинули и все создали заново.

Если есть демка графиков с тормозами в виде апк, это бы помогло понять вашу проблему, и взглянуть на иерархию вьюшек.
1. надо проверить
2. это точно не наш стиль :D

Залпом они создаются вначале при инициализации, а потом обновляются только те которые изменились по данным устройства.
Все чюдастей и чудастей. То есть сначала, код виртуальной машины C# конвертится в говно-код (ибо скорее всего без оптимизаций) интерпретируемой виртуальной машины Dalvik, которое все это начинает неспеша жевать на 4-ех ядрах и гиге оперативы. Ну не лол ли? Пишите на Си и асме под мобильные платформы, елы палы, хорош свой тормозной говнокод в сотню мегобайт вываливать. Не можете — не пишите вообще.
FYI: монодроид либо компилится в native, либо носит с собой свой JIT (в зависимости от настроек), и работает в разных сценариях от 3 (строки) до 10-20 (математика с плавающей точкой) раз быстрее интерпретируемого Dalvik'a :)
Ну а где про это в статье-то? Теперь да, буду знать. Тогда хорошо, можно для небольших домашних поделок пользовать.
Я бы посмотрел как вы бы написали приложение под «на Си и асме» и что бы это все работало на любом железе под управлением андроида.
дык можно же, и выложить в маркет пачку бинарей под разные процессоры. только GUI все равно без интеропа с джавой не напишешь, увы.
Угу- всегда можно выпустить под разные процессоры, версии андроида, сделать поддержку кучи китайских планшетов что есть у многих пользователей в силу малой цены, накомпилить кучу всего и заставить пользователя далекого от этого разбираться в том как же это хотя бы установить.
Если бы все было так хардкорно то у планшетов и смартфонов не было бы так много пользователей.
Судя по хардкорности троникса он наверняка совершает звонок со своего смартфона через косоль.
А как этого добиваются в Marmalade?
Скомпилировал бы под ARM, x86 и MIPS.
Продемонстрируете нам свой скоростной красивокод?
Судя по вашему сообщению именно вы знаете как его писать.
> кряком из интернета (который лежит далеко не на первой странице гугла)

hint: кряк гуглится по названию главного EXE монодроида :)

но я купил лицензию и в общем не жалею об этом.
Пора Моно учить
Вопрос почти по теме: а кто то щупал MvvmCross?
В данный момент щупаю:
— приходится писать больше кода
+ большая часть кода кроссплатформена
+ Стюард (автор mvvm cross) реагирует даже на русскоязычные твиты о своей платформе.
Подскажите дотНет разработчику. Если прямо сейчас начинать разрабатывать для смартфонов с андроидом, то на какую версию этого самого андроида ориентироваться?
Статистику по распределению версий можно всегда посмотреть вот здесь. Если ориентироваться на версию 2.2, то покроете больше 97% устройств.
А чем отличаются версии? В новых версиях есть нечто такое, чего не было раньше? Приложение, написанное для 4,0 просто не запустится на устройстве с 2.3? Что я теряю, если пишу для 2.2, вместо новейшей версии?
Очень обширный вопрос. На странице по ссылке, которую я вам привел, слева есть меню с кодовыми названиями версий Андроида, начиная с 2.3 «Gingerbread». По нажатию на название, вам покажут страничку с основными нововведениями в данной версии. Вообще, минимальная поддерживаемая версия 2.2 не значит, что вы не сможете использовать возможности из более новых версий. В Андроиде есть понятия Min SDK Version и Target SDK Version. Если интересно можете прочитать про разницу на StackOverflow: http://stackoverflow.com/questions/4568267/android-min-sdk-version-vs-target-sdk-version. А так же многие вещи были бэкпортированы из новых версий в старые или самим Гуглом (Android Support Library), или сообществом (ActionBarSherlock, NineOldAndroids, HoloEverywhere). Так что жить можно :)
А реально использовать эти библиотеки с Mono for Android?
В основном, Андроид славен переписыванием доброй части фреймворка при переходе от версии к версии (совместимость зачастую остается на уровне грязных хаков или сторонних компонентов). Можете сами прикинуть, какое это доставляет удобство в разработке.
Уже на четверку в общем-то. Двойки вам доставят хлопот с совместимостью, а доля их все быстрее снижается. Если год назад она составляла 90%, то сейчас это уже далеко не так. Пока вы сделаете свое приложение, все еще сильнее изменится.
Вот информация по распределению версий годичной давности: http://phandroid.com/2012/02/02/ice-cream-sandwich-now-on-1-of-android-devices-gingerbread-still-growing/, сравните с текущими данными. Доля Андроида 2.3.3 за год упала с 58,6% до 45,4%. Что-то мне подсказывает, что еще минимум года два (а то и больше) придется эту версию поддерживать.
2.3+2.2 составляла 90%. Сравните с текущими данными :)
Сейчас в сумме 53,7%, а через год будет 20-30%, по-моему такая доля еще стоит поддержки.
1) Visual studio C# версии professional и выше (пойдет и крякнутая)
2) Сам фреймворк (а он, в свою очередь установит за нас и джаву, и виртуальную машину и все остальное)

Если с первым все понятно, то со вторым сложнее- как оказалось в процессе использования фришная версия монодроида не умеет компилировать .apk файлы, так что стоит либо его купить, либо воспользоваться кряком из интернета (который лежит далеко не на первой странице гугла).

Ай яй яй… К чему нас автор призывает…
Для интерфейсов, по-моему, лучше Eclipse использовать. Он автоматически и центрует, и wrap_content/fill_parent выбирает.
НЛО прилетело и опубликовало эту надпись здесь
Плюсы:
— можно остаться на любимой Visual Studio (правда, с отладкой проблемы)
— можно reuse часть своего и third party кода на C#
— можно не учить java и/или ObjectiveC

1. Далеко не всегда.
2. Именно для этого все и затевается.
3. Вероятнее всего, потребуется выучить (как минимум азы, хотя бы для работы с GUI).
Минусы:
— производительность приложений
— невозможность использовать native code (вот в этом не уверен)
— зависимость от third party фреймворка (допустим, компания вылетела из бизнеса и перестала поддерживать фреймворки; в новых версиях Android и iOS начинаются проблемы)
— необходимость тащить за собой чужой фреймворк
— невозможность использовать third-party java код (которого куда больше, чем C#!)

1. Производительность в общем случае не страдает. И в любом случае, тут больше проблем бывает от кривой архитектуры, чем от фреймворка.
2. Возможно.
3. Да, есть такое.
4. Для большинства случаев — не беда.
5. Эмм, для шарпов кода прямо таки тоже немало.

Отвечая на ваш последний вопрос. Мне в перспективе нужен программист Monotouch. И да, он должен знать и C# и Objective-C. Ну и эцсамое, monotouch под винду не работает (если мы о полноценной работе хотя бы с эмулятором, а не просто писание кода).
НЛО прилетело и опубликовало эту надпись здесь
Видео стриминг — очень ресурсоемкая задача и жестко заточена на платформенные реализации соответствующих примитивов. Понятно, почему ее не выходит решать с помощью данных фреймворков.

У меня ситуация другая. Ядро приложения это специфическая ORM над базой данных + логика вокруг объектов из этой ОРМ. Самый большой объект там — картинка. А платформы по сути различаются только представлением. В итоге же получается, что глупо каждый раз писать ядро заново. Ну, как минимум, нерационально.

Специалист на каждую платформу обязательно будет. Как только появятся деньги весь этот банкет оплачивать ;)
>можно не учить java и/или ObjectiveC
По факту, нужно уметь читать этот код. На stackoverflow ответов на родных ЯП конечно больше.

>невозможность использовать third-party java код (которого куда больше, чем C#!)
Возможность. Вы можете подключать андроидовские (айфоновские) библиотеки к своему проекту.

> зависимость от third party фреймворка (допустим, компания вылетела из бизнеса и перестала поддерживать фреймворки; в новых версиях Android и iOS начинаются проблемы)

Ну пока ребята выпускают новые версии через пару часов после эппла, получили солидные деньги от мс и, насколько мне известно, вполне удачно их расходуют.
Не могу запустить приложение на эмуляторе выдаёт ошибку:

Ошибка
— — System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.

в Mono.VisualStudio.Extension.StatusBarHelper.get_IsFrozen()

в Mono.VisualStudio.Extension.StatusBarHelper.SetText(String text)

в Mono.Android.VisualStudio.MonoAndroidDeploySession.ShowProgressText(String text, CancellationToken token)

в Mono.Android.VisualStudio.MonoAndroidDeploySession.BuildAndSignPackage(CancellationToken token)

в Mono.Android.VisualStudio.MonoAndroidDeploySession.DeployApplication(AndroidDevice device, CancellationToken token)

в Mono.Android.VisualStudio.MonoAndroidDeploySession.OnDeploy()
— ОК


В чём проблема?
НЛО прилетело и опубликовало эту надпись здесь
и где он там?
Не подскажите в чем может быть проблема, при доступе в main.axml выскакивает такая ошибка

image

Более подробно проблему расписал здесь. Буду благодарен если поможете ее решить.
Пишем уже 4 года на Xamarin. И только на нем (серверные части MS SQL asp.net mvc и т.п.). Никаких проблем нет с производительностью и возможностями (у нас в основном заказчики ТОП Розничные компании, внедряли и iBeacon и т.п.). После покупки Microsoft стало даже как-то спокойнее :) Клиенты реагирует более приветливо когда говоришь про инструмент для разработки мобильных приложений. Сейчас даже сделали на базе Xamarin конструктор мобильных приложений (рынок просит, исходный код открыт и т.п. http://appropio.com)… В общем как человек из бизнеса — могу рекомендовать однозначно Xamarin.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации