Сколько кода можно повторно использовать из Xamarin Android в Xamarin Windows

Мне интересно, может ли кто-нибудь помочь мне с моим вопросом о приложениях Xamarin.

Допустим, мне нужно было бы разработать приложение для Android в Xamarin. Из-за характера приложения мне пришлось бы разрабатывать его как Xamarin Android, поскольку Xamarin Forms не будет работать с EMDK Zebra (сторонняя библиотека). Если мобильная версия Windows 10 станет более популярной, может возникнуть необходимость использовать это приложение также на телефонах с Windows.

Сколько кода, который я напишу для Xamarin Android, можно будет повторно использовать в будущем для приложения Xamarin для Windows? Кто-нибудь когда-нибудь делал что-то подобное?


person Denis Vitez    schedule 08.03.2016    source источник
comment
Это действительно зависит от вашей архитектуры, от того, сколько доменной логики и общей логики пользовательского интерфейса содержит ваше приложение, и сильно отличается от сценария к сценарию.   -  person Kai Brummund    schedule 08.03.2016


Ответы (2)


Как правило, вы можете ожидать, что вам придется переписать представления вашего приложения, если вы собираетесь использовать библиотеку MVVM.

Мне непонятно, почему вы не можете использовать EMDK Zebra для Xamarin с Xamarin Forms.
У меня есть партнеры, использующие его, вот пример, который я собрал, объясняющий основы< /а>.

Отказ от ответственности: я работаю в Zebra Technologies над инструментами разработки

Примечание. Я больше не работаю в Zebra
Если у вас есть вопросы по EMDK Zebra, хорошим вариантом будет
Zebra. портал для разработчиков

person pfmaggi    schedule 08.03.2016
comment
Используя приведенный вами пример, я смог заставить сканер штрих-кода работать в своем приложении Xamarin.Forms. Спасибо. Не могли бы вы помочь мне еще с одним вопросом. Можно ли сделать так, чтобы приложение, для которого требуется EMDK, также работало на других устройствах, не поддерживающих EMDK? До сих пор все попытки запустить мое приложение на устройстве без EMDK не увенчались успехом. - person Denis Vitez; 02.06.2016
comment
Привет, Денис! Наличие приложения, которое использует EMDK, но может работать на устройстве, отличном от Zebra, вполне возможно. Взгляните на это обсуждение на панели запуска Zebra. КСТАТИ: Мы планируем провести семинар в Любляне в сентябре. - person pfmaggi; 02.06.2016
comment
Привет, мне удалось перенести код из предоставленного ответа в Xamarin, и я могу подтвердить, что приложение теперь работает на устройствах, отличных от EMDK. Мне также пришлось изменить эту строку в файле AndroidManifest: ‹uses-library android:name=com.symbol.emdk/› и установить для флага android:required значение false. Однако приложение теперь работает на устройствах TC55 и устройствах, отличных от EMDK, но сканирование штрих-кода не работает на TC70. Может быть, мне нужно как-то изменить EMDKConfig.xml? - person Denis Vitez; 03.06.2016
comment
Убедитесь, что среда выполнения EMDK установлена ​​на устройствах Zebra (TC55 и TC70), все остальное должно быть одинаковым. - person pfmaggi; 03.06.2016
comment
Привет @pfmaggi, я нашел ошибку в своем приложении. Я получаю нулевое значение для следующей строки: mProfileManager = (ProfileManager)emdkManager.GetInstance(EMDKManager.FEATURE_TYPE.Profile); Я дважды проверил образец кода и свое приложение, и код выглядит идентично. Все остальное работает, за исключением того, что профиль не создается в DataWedge, когда я загружаю свое приложение на устройство. Может быть, у вас есть идеи, почему я должен получить null для ProfileManager? - person Denis Vitez; 20.07.2016
comment
Денис, какое у тебя устройство? какая версия EMDK? Какая среда выполнения EMDK установлена ​​на вашем устройстве? это фрагмент кода, который не работает внутри обратного вызова onOpened? - person pfmaggi; 20.07.2016
comment
У меня есть EMDK для Xamarin версии 2.0.4.3, служба EMDK на устройстве — 3.1.38, а устройство — TC55 под управлением Android 4.4.3, и да, код находится внутри OnOpened, как и в вашем образце. - person Denis Vitez; 20.07.2016
comment
Вам необходимо установить на устройство новую среду выполнения EMDK. Версия, доступная с новым Xamarin EMDK, должна быть примерно v5.x. Обновите его и дайте мне знать, если вы все еще видите проблему. - person pfmaggi; 20.07.2016
comment
Я обновил среду выполнения EMDK с помощью функции среды выполнения «Установить устройство» в Visual Studio, теперь она имеет версию 4.1.2.0. Однако проблема остается той же. Странно, что все остальное работает, но я получаю null для ProfileManager. - person Denis Vitez; 21.07.2016
comment
Денис, было бы полезно иметь некоторый код, чтобы понять, что происходит. Без этого невозможно помочь. При желании вы можете опубликовать обсуждение на сайте developer.zebra.com в разделе Android. - person pfmaggi; 21.07.2016
comment
Привет, Пьетро. У меня такая же проблема, тот же аппарат. Я обновил среду выполнения устройства EMDK до версии 5. Мой код — это ваш код, так как я использую образец на вашем GitHub. Исключение нулевой ссылки для mProfileManager = (ProfileManager)emdkManager.GetInstance(EMDKManager.FEATURE_‌​TYPE.Profile); - person Dave; 01.11.2016
comment
Привет, Дэйв, я ненавижу это говорить, но это работает на моем устройстве. Я тестирую это на TC55 2D GMS с BSP 2.65 с установленным CFE-02. Я обновил проект на github, чтобы включить последний компонент EMDK (первоначально проект включал альфа-версию компонента EMDK) - person pfmaggi; 02.11.2016
comment
... и я провел тот же тест на TC55 1D (опять же BSP 2.65 + CFE-02, версия GMS и EMDK v5.0.3). Нет проблем даже на этом устройстве. Вы можете найти APK-файл выпуска, созданный на моем Mac с помощью Xamarin Studio v6.1.1, Xamarin.Android v7.0.1.3 и Xamarin Forms v2.3.2.127 здесь - person pfmaggi; 03.11.2016
comment
Привет Пьетро, ​​это поздний повтор, но все же лучше поздно, чем никогда. Мне удалось решить проблему. Проблема заключалась в том, что файл профиля EMDK был закодирован как UTF-8 со спецификацией, а не как UTF-8 без спецификации (или, может быть, это было другое, я не уверен на 100%). Изменение кодировки файла решило проблему. Это действительно был странный баг. Может быть, вы могли бы добавить эту проверку кодировки файла в EMDK, чтобы он возвращал какую-то ошибку, чтобы уведомить разработчика о его проблеме :) - person Denis Vitez; 03.06.2017
comment
Спасибо @DenisVitez, можете ли вы предоставить дополнительную информацию, чтобы воспроизвести проблему? Благодарность! - person pfmaggi; 09.09.2017
comment
Привет @pfmaggi, процедура воспроизведения этой проблемы довольно проста. Просто откройте файл EMDKConfig.xml, который вы используете в своем тестовом приложении, в текстовом редакторе (например, Notepad++), измените кодировку на UTF-8-BOM и сохраните файл. После этого, если вы попытаетесь создать свое приложение и развернуть его на устройстве, оно не создаст профиль DataWedge, определенный в файле EMDKConfig.xml. Если вы измените кодировку файла обратно на UTF-8, он снова будет работать. Дайте мне знать, если вам удастся воспроизвести его. - person Denis Vitez; 14.09.2017
comment
@pfmaggi Привет, я только что снова столкнулся с этой проблемой, так что я думаю, она еще не исправлена? Это произошло с EMDK для Xamario 3.0. Это происходит потому, что Visual Studio по умолчанию создает XML-файл с кодировкой UTF-8-BOM, поэтому я думаю, что это распространенная проблема, и я удивлен, что она еще не исправлена. Конечно, теперь я знаю, как использовать обходной путь и изменить кодировку файла в Notepad ++, но я все же предпочел бы, чтобы это было исправлено :) - person Denis Vitez; 03.01.2019
comment
@pfmaggi О, я заметил, что ты больше не работаешь на Zebra. Извините, я обращусь в официальную поддержку :) - person Denis Vitez; 03.01.2019
comment
Другой вариант — опубликовать свои вопросы/предложения на портале разработчиков Zebra: developer.zebra.com. - person pfmaggi; 04.01.2019

Денис, Можешь попробовать информацию, приведенную здесь, и посмотреть, поможет ли это? UTF-8 без спецификации

Если вы хотите сохранить файл с другими кодировками, выберите «Сохранить как» и расширьте кнопку «Сохранить» в диалоговом окне файла и выберите «Сохранить с кодировкой». Или, если вы хотите навсегда избавиться от этого параметра, просто откройте меню «Файл» и выберите «Дополнительные параметры сохранения», а там вы должны выбрать «UTF-8 без подписи» (и это также ответило на ваш последний вопрос :). Да, «UTF-8 без подписи» — это то же самое, что и без спецификации.

https://marketplace.visualstudio.com/items?itemName=SergeyVlasov.FixFileEncoding

person Herbert    schedule 23.01.2019