Розробка мобільного додатку між платформами [закрито]


109

Запускається все більше мобільних платформ, а розробники доступні для SDK. Доступні різні мобільні платформи: Android, iOS, Moblin, Windows mobile 7, RIM, symbian, bada, maemo тощо.

А створення крос-платформних додатків - головний біль для розробників. Я шукаю загальні речі на платформах, які допоможуть розробникам, які хочуть перенести додаток на всі платформи. Як, наприклад, різні роздільні здатності екрана, методи введення, підтримка відкритого gl тощо., Будь ласка, поділіться деталями, які ви знаєте для будь-якої платформи.

Або є можливості, написавши код у html (тип віджета) та завантаживши його у нативну програму. Я знаю про андроїд, за допомогою якого ми можемо додати веб-перегляд у додаток, зателефонувавшиsetContentView(view)

Будь ласка, поділіться деталями класу, де ми можемо додати HTML-представлення до нативного додатку різних типів платформ, які ви знаєте.

Мета цього потоку - це спільна інформація про розробників. маркування як вікі спільноти.

Інструменти та бібліотека крос-платформ


1
У той час як я знайшов одну цікаву нитку , яка пов'язана з цим одним, stackoverflow.com/questions/3326110 / ...
sohilv

ще один хороший пост про кроссплатформенних Dev: stackoverflow.com/questions/51988 / ...
sohilv

1
Проголосували за те, щоб закрити це як дублікат. Це занадто важливо, щоб розділити на два питання. stackoverflow.com/questions/51988 / ...
ripper234

1
Нещодавно я блогував
Anshu Dwibhashi

Відповіді:


97

Моя відповідь тут стосується деяких технічних обмежень інструментів крос-платформи, але дозвольте мені трохи розширити:

Я думаю, що інструменти міжплатформової історії також завжди були ранами, оскільки такі інструменти мають неправильну філософську спрямованість.

Усі точки продажу інструментів для перехресних платформ - це переваги, які вони приносять розробникам . Вони продаються за ідеєю, що вони дозволяють розробникам писати один раз запустити в будь-яке місце. Вони продаються з ідеєю, що вони дозволяють розробникам розширити свій ринок, не вивчаючи нові API. Вони продаються за ідеєю, що вони дозволяють розробникам скоротити витрати та час на ринок.

Те, що інструмент для перехресних платформ НЕ продається, - це користь, яку вони приносять кінцевим користувачам .

Перевага для кінцевого споживача не є точкою продажу, оскільки крос-платформа рідко є користю для кінцевого споживача. Кінцевому користувачеві байдуже, наскільки важко розробнику довелося працювати, щоб вивести продукт на ринок. Також їх не хвилює, скільки платформ може працювати програма, коли вони не використовують, але одну платформу. Їм просто важливо, чи додаток робить те, що їм потрібно, на апаратному забезпеченні, яке потрібно для його запуску. Якщо у них немає конкретної потреби запускати додаток на багатьох різних платформах, той факт, що це робить, не приносить їм ніякої цінності.

І навпаки, неминучі компроміси створення крос-платформного API означають, що всі програми, створені API, матимуть кращий B-клас на кожній платформі. Вони ніколи не будуть найкращим інструментом для використання на кожній платформі.

Все це означає, що в більшості випадків використання інструменти крос-платформи дають кінцевому користувачеві неповноцінний продукт порівняно з продуктами, виготовленими за допомогою конкретних API-платформ. Кінцевий користувач завжди матиме кращий вибір.

Ви довго заробляєте гроші, надаючи кінцевим користувачам найкорисніші інструменти. Якщо ви не по-філософськи зосереджуєтесь на тому, щоб зробити життя кінцевого користувача простішим та продуктивнішим, ви з самого початку приречені. Кінцеві користувачі мають багато варіантів, і якщо ваш інструмент не один із найкращих, ви не зробите це на ринку.

Використовувати кросплатформові інструменти слід лише в тому випадку, якщо ви думаєте, що "користувачі дійсно виграють від запуску цього додатка на багатьох різних платформах". Якщо ви почнете дивитися на інструменти крос-платформи виключно тому, що вони полегшать ваше життя (розробникам) життя, то ви вибрали їх з неправильної причини, і вони зашкодять вам більше, ніж допоможуть.


52
Добре менша (непотрібна) робота для розробників означає більш швидкі цикли оновлення, швидші нові функції, швидші виправлення тощо. З тією ж робочою силою можна отримати більше. Я розглядаю це як користь для кінцевого споживача.
Шетбі

10
Теоретично, швидший розвиток може бути кращим для кінцевого користувача, але це не філософські основи більшості міжплатформних API. Я бачив багато спроб використання таких інструментів у багатьох середовищах, і завжди акцент робиться на тому, щоб полегшити життя розробника за рахунок якості кінцевого продукту. Більше того, обіцянки швидше та дешевше рідко скасовуються. Завжди, здається, десь показує зупинка замикання, яка їсть більшу частину заощадженого часу.
TechZen

5
Для того, щоб повернути свою увагу додому, врахуйте це: міжплатформні API існують для багатьох різних класів обладнання та ОС. Скільки кросплатформних додатків ви особисто використовуєте регулярно? Скільки додатків на багато платформах ви коли-небудь використовували, про що ви добре думали? Люди наполягають на міжплатформних API, оскільки їх було більше, ніж одна платформа, але вони ніколи ніколи не досягли успіху. Вони не досягають успіху, оскільки не виробляють найкорисніших програм для кінцевих користувачів.
TechZen

4
@TechZen - Я зараз використовую StackOverflow у своєму веб-браузері і не бачу причин шукати рідного клієнта. Я думаю, ви надто узагальнили свої претензії.
Ювал Бронькі

4
Я дуже засмучений тим, що подібні суб'єктивні філософські дискусії отримують правильну позначку на технічному веб-сайті. Що ще гірше, теза цієї публікації недійсна для більшості основних програм, якими ми користуємось сьогодні: Веб-браузери є платформою; Photoshop, MS Office, Dropbox та інше є платформою; просто відкрийте меню «Пуск» або «Finder» та перелічіть хлопців, визначених на платформі - найімовірніше, що найчастіше знайдеться невелика утиліта. Ваш аргумент був би справедливим, якщо ви вважаєте, що мобільні телефони докорінно відрізняються (дуже обґрунтоване припущення), але, здається, немає аргументів для створення цієї основи.
kizzx2

14

Існує кілька підходів до розробки платформ на мобільних пристроях. Звичайно, всі вони мають обмеження. Жодне рішення не вдається скористатись усіма функціональними можливостями пристрою так, як це може мати нативна програма.

Повторне використання коду

Незважаючи на те, що всі мобільні ОС не використовують один і той же мова розробки та API, іноді ви можете ділитися деякими класами або кодом логічного рівня.

Наприклад, C ++, можливо, може бути повторно використаний для додатка iOS , для додатка Android за допомогою NDK , для додатка Symbian, оскільки вони розроблені на C ++ тощо.

Деякі рішення також пропонують можливість писати додаток іншою мовою, ніж та, якою зазвичай користується пристрій. Найвідоміші (насправді єдині, кого я знаю) - комерційні та засновані на проекті Mono (розробка C #):

Але я не впевнений, що насправді можна назвати цією кросплатформою, оскільки повторне використання коду обмежено залежно від пристрою:

  • Windows Phone 7 не дозволить розробляти нативний код (можливо, у подальших оновленнях)
  • Моноподібний проект AFAIK існує не для всіх платформ (поки що?) Bada, webOS, maemo тощо.

А частина інтерфейсу також залишається специфічною для кожного пристрою.

веб-розробка

Регулярною відповіддю на запитання про розробку кросплатформ для мобільних пристроїв є веб-розробка. Тоді нам знадобиться обгортка, яка використовує мобільний браузер, щоб він виглядав і поводився як нативне додаток. Ось як деякі кросплатформні рамки, які ми побачимо далі про роботу.

Зростання HTML5 привертає до функцій веб-розробки, які можна було виконати лише за допомогою нативного додатка, такого як геолокація, офлайн-додаток, локальне зберігання.

Ми можемо знайти все більше і більше рамок для розробки веб-додатків для мобільних телефонів з власним виглядом, використовуючи новітні веб-стандарти HTML5, CSS3, Js:

Але HTML5 ще дуже молодий і реалізація може відрізнятися від браузера до іншого. Більшість мобільних браузерів за замовчуванням використовують механізм WebKit (головним винятком є ​​мобільний / мобільний телефон Windows за допомогою Internet Explorer), і навіть тому вони не обов'язково підтримують однакові функції . З локальною базою даних все ще незручно працювати, і ми не можемо бути впевнені, як це реалізується різними браузерами. Більше того, навіть за допомогою HTML5, веб-розробка все ще дуже обмежена порівняно з нативним додатком. Ви не можете отримати доступ до контактів, камери, акселерометра тощо.

Редагувати: Раніше цього місяця W3C надіслала попередження про розвиток HTML5: Стаття від ZDNet

Тож він підійде лише для обмеженої категорії застосувань.

Міжплатформові рамки

І чим у нас є рамки для мобільних додатків між платформами. Імовірно, ви можете розробити один раз та розмістити на різних платформах. Зазвичай ці рішення зосереджуються на iOS та Android і покладаються на движок WebKit. Вони пропонують більше взаємодії з функціоналами телефону під час розвитку веб-технологій. Найвідоміші - Nitobi PhoneGap, RhoMobile Rhodes, Appcelerator Titanium. Але багато інших є там і не всі використовують таку саму техніку, як MoSync, яка переводить ваш код на власну проміжну мову, перш ніж компілювати його на потрібну платформу.

[1] Пам’ятайте, що Apple має спеціальну політику щодо додатків, написаних для їх платформи. Вони, схоже, не блокують ці програми на цю дату, але це інформація, яку слід враховувати. Редагувати: Apple змінила цю політику з 9 вересня.


6

Ви отримуєте деяку спільність під час розгортання у форматі webapp (html5, як згадувалося вище), але для багатих рідних додатків API абсолютно різні для різних смартфонів.

HTML5 може дещо вдосконалити речі, але для того, щоб робити цікаві речі, потрібно мати рідну мову.

Існують рамки для смартфонів, які є «платформою», такі як Phonegap, але я чув переважно погані речі щодо використання його для «реальної» роботи. (багато накладних витрат тощо)


5

Так, html5 привертає деяку увагу. Ви також повинні подивитися на цей консорціум і платформу, щоб прийти в Q4. Не впевнений у успішності цього проекту, адже це звучить як величезна проблема, але ось деталі:

Веб-сайт: http://www.wholesaleappcommunity.com/default.aspx

Новини: http://news.google.de/news/search?aq=f&pz=1&cf=all&ned=us&hl=uk&q=%22Оптова торгівля+Аплікації+Community%22

У листопаді WAC прагне опублікувати свої початкові характеристики та компоненти свого SDK розробникам. Ця специфікація базуватиметься на стандартах W3C та створить потужну платформу для розробки багатих мобільних веб-додатків. WAC також забезпечить зворотну сумісність для пристроїв на основі поточних специфікацій JIL та BONDI. ( http://www.convergedigest.com/Bandwidth/newnetworksarticle.asp?ID=31021 )

.

Це міжнародна коаліція близько 25 телекомунікаційних компаній, яка має на меті створити платформу, відкриту для всіх розробників і продавати всім користувачам мобільних телефонів. ( http://www.downloadsquad.com/2010/02/15/atandt-wholesale-applications-community-is-a-platform-not-an-app/ )


1

Наскільки я знаю, більшість із цих пристроїв здатні запустити це:

Java ME - найбільш поширена платформа додатків для мобільних пристроїв

Я думаю, що це може слугувати як хорошим, так і поганим прикладом.


Насправді, на iPhone немає Java, і наскільки я знаю, java не працює на андроїд
Alaa Nassef

Розробка Android - це масово Java. developer.android.com/reference/java/net/package-summary.html
Нік Гарві

Я не знаю деталей, але Avian JVM дозволяє Java працювати на пристроях iOS.
Куазі Ірфан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.