Я портирую свое приложение с iOS на Android: что мне нужно знать? [закрыто]

15

Какие подводные камни мне следует избегать?

  • Какие парадигмы языка Java разработчики Objective-C постоянно неправильно понимают? Я научился программировать на Java, но уже много лет я работаю только в Objective-C.
  • Чем отличаются шаблоны дизайна для Android и iOS?
  • Если вы осуществили переход самостоятельно, какие части Android смутили вас или заняли у вас больше времени, чем нужно?
  • Является ли Eclipse лучшей OS X IDE для Android?

Кстати, мое приложение очень сильно привязано к UIKit и Foundation, поэтому слово «портирование» может быть неправильным; Я на самом деле буду полностью переписывать его для Android. Нет повторного использования кода. Кроме того, я делаю это, чтобы изучить Android, поэтому я предпочел бы потерпеть неудачу в порту и изучить Android, чем использовать ярлык.


В качестве предыстории этот вопрос был вызван типами вопросов, которые я вижу в Stackoverflow. Часто вы можете сказать, какой у кого был опыт (C # или Java), по каким глупым ошибкам они делают, когда пытаются написать Obj-C. Я бы хотел избежать ошибок, которые заставляют Java-разработчиков закатывать глаза и говорить: «Глупые разработчики Objective-C, они никогда не научатся?»

куби
источник
2
Is Eclipse the best OS X IDE for Android?Да, ADT плохо работал с netbeans, когда я последний раз пробовал. Eclipse является рекомендуемой IDE.
Keyo
@Keyo: а? Когда я попробовал это на Netbeans полтора года назад, это работало довольно хорошо. Конечно, за это время стало бы лучше?
TheLQ
В ответ на комментарий @ Nassign-as-an-answer: я бы, конечно, получил бы гораздо больше ответов, если бы писал на Stackoverflow, но, просматривая Программисты, похоже, что многие из этих типов вопросов переносятся сюда. Если это будет более подходящим для этого форума, я могу спросить это там.
Куби
Я думаю, что вы получите больше ответов, если поместите его в stackoverflow.
Nassign
1
@kubi Это прекрасное место, чтобы спросить об этом и соответствует цели этого сайта: надеюсь, вы получите ответы на некоторые вопросы, мне самому интересно.

Ответы:

11

Я портирую приложение с iOS на Android, это чужое приложение, с которым я работаю, чтобы сделать порт, но тем не менее.

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

Некоторые общие вещи:

  • Пейзаж в значительной степени требуется на устройствах Android
  • Приложения Android, как правило, продолжают работать, когда они не используются активно, поэтому вам нужно подумать об этом из-за проблем с сетью, GPS и т. Д.
  • Сегментация устройств, существует множество устройств Android и разрешений экрана, именно здесь очень удобны относительные макеты и изображения из девяти патчей.

Большой, о котором многие люди изначально не задумываются Your UI can not be exactly the same on both devices, конечно, он может быть похожим, но перенос пользовательского интерфейса iPhone на устройство Android не сработает.

Несколько причин:

  • Длинные сенсорные контекстные меню
  • Всплывающие меню
  • Сегментация устройства, вызывающая различные разрешения и пропорции
  • Не те же элементы управления для работы с

Серверная часть на самом деле не имеет большого значения, так как большая ее часть просто реализует основную часть того, с чем вы работали, в Java и Android SDK. Мои самые большие проблемы возникли из-за ожиданий пользователя, поведения и различий пользовательского интерфейса, иногда это лучше, а иногда хуже. Это действительно зависит от того, что делает ваше приложение.

РЕДАКТИРОВАТЬ

Я только что понял, что не ответил на реальные части ваших вопросов, так что здесь (мой лучший выстрел по крайней мере)

Я бы не сказал, что есть какие-то большие языковые парадигмы, которые разработчики Obj-C неправильно понимают, я бы сказал, что Java, вероятно, проще получить то, что я хочу, с точки зрения ООП. (Должен сказать, что я действительно работаю только с .NET и Java и знаю только достаточно Obj-C).

Я бы определенно использовал Eclipse, я устал от IntellijIdea какое-то время, и это просто дало мне много проблем, пытаясь заставить его делать определенные вещи.

msarchet
источник
Когда вы говорите «Требуется пейзаж», вы имеете в виду помимо портрета? Мое приложение выполняет только несколько задач в фоновом режиме на iOS. Нужно ли явно отказываться от запуска в фоновом режиме, если мне не нужно ничего делать в фоновом режиме?
Куби
@kubi да в дополнение к портрету, потому что у хорошего набора устройств есть аппаратные клавиатуры, которые помещают устройство в горизонтальное положение при использовании. На заднем плане это тот факт, что приложение продолжает работать, когда пользователь переключает приложения.
msarchet
+1 (или больше): «портирование пользовательского интерфейса iPhone на устройство Android будет работать не очень хорошо». Это правда: на самом деле пользовательский интерфейс может быть совсем другим, так как доступная библиотека отличается.
Дэн Розенстарк
IntelliJ Idea прекрасно подходит для разработки под Android. Любить это.
Александр Бабаев
3

[этот ответ - что-то вроде болтовни или разглагольствования. Я собирался удалить его, но подумал, что это может быть интересно: дайте мне знать через комментарии, если я должен удалить это, и я буду].

Я не работаю на Android, но я работаю на Java и iOS (с Obj-C). Единственное, что действительно отличается в разработке Java, это то, насколько сильно может помочь IDE (люди скажут вам не использовать IDE, что совершенно по-другому относится к одной и той же вещи: однако, мало кто советует это с Java) , XCode, как правило, не может даже ПРАВИЛЬНО обнаружить самые простые синтаксические ошибки (я думаю, из-за структуры языка). В Java, с другой стороны, IDE может заставить вас двигаться гораздо быстрее, чем без него. Вы также можете делать действительно классные вещи, такие как программирование вызывающего cient и затем написание метода. В Eclipse, например, если я наберу

blah.doIt(firstObj, secondObj);

и firstObjи secondObjявляются Stringслучаями, среда даст мне возможность сделать метод с сигами «общественный недействительный Doit (String firstObj, String secondObj).» Это действительно круто, и только верхушка айсберга: IDE - твой друг. Я слышал, что IntelliJ может быть даже круче (хотя в моих испытаниях этого не было).

Есть ли подводный камень в этом ответе? Возможно, это так: мышление IDE играет одинаковую роль в Obj-C и Java. В Java IDE может делать то, что было бы невероятно сложно сделать самостоятельно. Благодаря рефакторингу, благодаря тому, как работает Java, он в 100 раз мощнее, чем у XCode. Это означает, что вы можете отложить некоторые вопросы дизайна на потом.

Дэн Розенстарк
источник
Многие мои мысли об этом изменились благодаря AppCode. Это круто Тем не менее, он не может отличить одноименные вещи, но определенно делает большую работу за вас.
Дэн Розенстарк