Information

Founded
Location
Россия
Website
www.yandex.ru
Employees
over 10,000 employees
Registered

Habr blog

Pull to refresh
Comments 38
а почему не рассматривается кроссплатформенная разработка, а только гибридная на веб технологиях?
Это отдельная большая тема. Но рассказать об опыте Яндекса в этом — хорошая идея. Попробуем!
Так ведь в Facebook сейчас React Native используют. Разве это не разновидность кроссплатформенной разработки?
Как я понял, Facebook разрабатывает React Native и использует его в своих приложениях, но они не целиком написаны на React Native.
React Native Showcase
Многие забывают, что React Native это технология, предназначенная для организации композиции нативных UI-элементов. И это иногда даёт overhead на разработчиков больше, чем при разработке гибридных. Ибо там они вольны ваять красоту без ограничений и сверстать могут любой макет, и лишь при обращении к устройству им нужен нативный код. А вот задание сверстать согласованый макет на React Native порой несёт сюрпризы.

Брешут. Вот только на днях заопенсорсили либу для натива, довольно серьезную, которую используют для многопоточного рендеринга карточек в ленте. На реакте производительности не хватит в принципе.

Вполне можно делать такую резину, которая и на маленьком экране не выпирает и на большом не выглядит по дебильному мобильному. Например: http://mol.js.org/app/supplies/

Возможно ссылка работала, но сейчас если оно выглядит не то что бы по-мобильному
а как-то тоже не ок



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

Вы про анимацию, задержку между переходами или скроллинг?

Между нажатием на карточку товара и открытием полной информации около секунды полного фриза. Firexox на Xperia xa, 6.0.

Да, мобильный FF далеко не самый быстрый браузер. Попробуйте Хромушк.

Пользователям предлагается поставить приложение в котором тоже хромушк в качестве движка.

Всегда интересовало, почему ваши приложения такие э-э… активнопотребляющие ресурсы? И медленно работающие. Во всяком случае под Андроид.

Яндекс-такси — батарейку съедает прямо а глазах. Только запустишь — сразу настолько активно что-то делает, что индикатор оставшейся энергии щелкает по одному проценту в 30 секунд. Если закрыть (свернуть) приложение, то постоянно использует запросы геолокации. Пока полностью принудительно не остановишь работу в настройках системы. Убер и гетт — так себя не ведут. В итоге пользуюсь убером.

Яндекс-навигатор. Стартует очень долго. При работе раскаляет телефон до такой степени, что появляется системное сообщение о том, что батарея имеет недопустимую температуру и необходимо выключить телефон. И это после каких-то получаса работы. Тот же османд по несколько часов без проблем работает, ничего не перегревая. Телефон в это время работает от авто-зарядки.

И вишенка на торте — оба этих приложения каким-то образом перезапускают друг друга. Т.е. если принудительно завершить одно из них, то через некоторое время оно опять оказывается запущено. Если остановить оба (настройки-приложения-остановить) — то тогда действительно все завершается.
То, что приложение активно, определяю по запросам разрешения обратиться к запрещенным для приложения ресурсам. Например — запрещаю яндекс-такси использовать «сведения о местоположении». И при попытке яндекс-такси получить это самое местоположение — появляется системное уведомление о том, что яндекс-такси пыталось это сделать.
Я не запрещаю. Просто заметил, что кто-то с некоторой периодичностью использует GPS, решил выяснить кто. Вот таким образом нарушитель моего спокойствия и нашелся.
Извините, только сейчас заметил — прочитал ваш вопрос как «зачем», а не «чем». Подумал, что вы спрашиваете, зачем я вообще запрещаю использование GPS на телефоне. На это и ответил, что не запрещаю в общем и целом.

Теперь правильный ответ — в этом конкретном случае запрет устанавливал какой-то штатной приблудой, которая выдает разрешения приложениям и контролирует использование. Андроид 5.
У меня в «шторке» постоянно висит. Называется «Контроль разрешений».
В списке установленных сторонних приложений ее нет.
Есть в запущенных есть, запущена как служба PermControlService.
Повторюсь — отдельно не ставил, было в прошивке.
UFO landed and left these words here
Антон, а можете прислать модель вашего устройства? Я передам разработке.
Если бы конкретная модель телефона имела значение, я бы и не писал даже. Дело в том, что подобное поведение замечено более, чем на одной модели. Ощутимо более.
Но если вам это поможет, то в последний раз ваш навигатор раскалил телефон FLY Octa IQ4511.

Вы же сообщите о результатах, да? Или просто так, из вежливости, спросили?
Нет, конечно, не из вежливости. Хорошо работать в наших же интересах. Напишу!
ведровому юзеру ведровые приложения.
на iOS всё как часы
Вы удивитесь, но далеко не всем нравится продукция Apple.
Айфоном пользуюсь как простой звонилкой для третьей симки.
А Вы случайно не думали написать какое нибудь руководство для обучающихся у вас и доступное всем остальным?
Это привлечение ценных кадров. Все же любят учиться — так учитесь, работая на Яндекс!
Судя по всему под гибридным подходом имеется именно PhoneGap/Cordova. Было бы интересно есть ли реальный опыт использования js + native views например: react native, titanium appcelerator или nativescript. Странно, что обошли эту тему стороной
такого опыта не так много, т.к. в большинстве случаев мы используем или полностью нативные или html+css+js технологии

Обзор не серьезный. Много воды и не о чем.


Сейчас есть проекты crosswalk, wk-webview, ionic2, которые вывели гибридную разработку совсем на другой уровень. (Не вижу упоминания об этом)


А если вам нужна 3д анимация и прочие рил-тайм штучки, пожалуйста, пишите нативный плагин и продолжайте разработку на веб технологиях. Тогда вам не нужно в штат 3 девелопера нативщика. Можно использовать фриланс, аутсорс или 1 адекватного программиста, который напишет нужный плагин когда это потребуется.

да, вы правы, материал рассчитан на более широкий круг читателей и не содержит многих технических подробностей


crosswalk и ionic2, это конкретные способы разрабатывать на платформе Cordova, а wk-webview подразумевается, в том числе, когда мы говорим о кастомных гибридных архитектурах


подробнее про это и про то, какие части можно делать в виде нативных плагинов, мы говорим на самой Школе Разработки Интерфейсов (https://academy.yandex.ru/events/frontend/shri_msk-2017/)

На самом деле чистое веб-приложение сейчас не сделать.

Сделать


Веб-вью все равно нужно положить внутрь iOS или Android-приложения, то есть в любом случае нужен контейнер, который написан с помощью Java, Swift или Objective-C.

Не нужен.


Есть такая штука — прогрессивные веб-приложения (progressive web apps, PWA) и WebAPK. Советую почитать, что это такое.


Поэтому на вопрос


Натив или гибрид?

ответ будет — прогрессив.


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

Так и количество различных зарекомендовавших себя макетов интерфейса (layouts), используемых в современных приложениях, тоже не бесконечно. Есть готовые решения, например: https://polymerelements.github.io/app-layout/


Кроме того, встает вопрос, хотите ли вы трижды рисовать разный дизайн для каждого приложения. Ведь гайдлайны операционных систем сильно отличаются друг от друга, и как лебедь, рак и щука двигаются в разные стороны в мелочах. Если внимательно прочитать гайды Windows Phone, Android и iOS, то окажется, что нужно хорошо продумать, как ваша пользовательская задача будет оптимально решаться на каждой из платформ.

Есть Material Design, который является кроссплатформенным: https://material.io/guidelines/platforms/

Кратко:
— если нужны вычислительные ресурсы = натив
— если отображение текстовой информации + немного графики = гибрид
Андроид-разработчикам я бы рекомендовал держаться от любых web view подальше, если не хотите быть заблокированными в Google Play за нарушение Spam provision of the Content Policy:

Do not post an app where the primary functionality is to provide a web view of a website not owned or administered by you (unless you have permission from the website owner/administrator to do so)

И пусть вас не смущает уточнение в скобках — мне известно уже два приложения, заблокированных за показ OAuth-страницы в web view.
И пусть вас не смущает уточнение в скобках — мне известно уже два приложения, заблокированных за показ OAuth-страницы в web view.

Без подробностей, выглядит как вброс. Кого именно заблокировали, с каким комментарием, и т.д.
Гугл последнее время стал пристальное внимание уделять используемым логотипам и брендам: требуют подтверждающего письма что вам разрешили использовать бренд, заказали это приложение.
>> показ OAuth-страницы в web view.
а если страницы в chrome tabs?
Only those users with full accounts are able to leave comments. Log in, please.