Разработка общей сетевой библиотеки Android / iOS - PullRequest
7 голосов
/ 20 декабря 2010

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

Что сделали люди для работы в сети?Кажется, я не могу найти никаких ресурсов для выполнения HTTP-запросов GET / POST в Android.

Как бы вы подошли к вопросу разработки общей сетевой библиотеки для iOS и Android.

РЕДАКТИРОВАТЬ: Я буду заниматься всем сетевым программированием для Android на C / C ++, а не на Java!

Существуют ли сетевые библиотеки C / C ++ для Android (и впоследствии могут использоваться для iOS)?

Ответы [ 6 ]

9 голосов
/ 29 января 2011

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

В качестве примера, проверьте этот пост в блоге: http://thesoftwarerogue.blogspot.com/2010/05/porting-of-libcurl-to-android-os-using.html

Если библиотеку cURL можно использовать на Android, я не понимаю, почему ваша сетевая библиотека не смогла. Скорее всего, трудности будут связаны с взаимодействием с графическим интерфейсом, поскольку у вас нет доступа к SDK платформы из базы кода C / C ++. Но для сетевой библиотеки это совершенно нормально. Вот что я предлагаю:

  1. Напишите некоторые доказательства концептуального кода, чтобы увидеть, как вы можете связываться с библиотекой с обеих платформ. Учитывайте ограничения в дизайне вашей библиотеки.
  2. Создайте свою сетевую библиотеку как самостоятельный проект с подходом к разработке на основе тестирования. То есть, пишите модульные тесты, чтобы заставить ваш код проверять его по мере его разработки.
  3. Создание классов-оболочек в собственном коде в проектах Android и iOS для изоляции кода библиотеки.

Кроме того, как уже упоминалось, Apple вполне подходит для разработки приложений на C / C ++, если они работают с XCode. Они даже ослабили это требование в прошлом году.

Удачи

1 голос
/ 20 декабря 2010

Вы можете попробовать Titanium , исходный код находится в JS, а затем кросс-компилируется в iOS или Android.

1 голос
/ 20 декабря 2010

Как уже говорили другие, это будет нелегко, если вообще возможно.Если вы решите сделать попытку, я бы порекомендовал работать на C / C ++, поскольку обе платформы могут обрабатывать этот язык.(Как вы знаете, iOS - это Objective-C, а Android может обрабатывать C через NDK.) Не пытайтесь заставить Java работать на iOS ...

1 голос
/ 20 декабря 2010

Учитывая различия, это не совсем возможно. Трудно писать общую библиотеку для Blackberry / Android, и они оба используют «Java».

Если вы действительно хотите сделать кроссплатформенный, тогда вы будете писать веб-страницы в javascript, а затем размещать их на веб-представлениях на устройствах.

Вы не можете на самом деле обмениваться кодом в Objective C и Java, это невозможно, на самом деле, вы не можете запустить Java на iPhone и вы не можете запустить ObjectiveC на Android. Так что нет никакого вменяемого способа сделать это с нативным кодом.

Редактировать: Что касается сетей, не думайте, что вы найдете много мест, где вы можете получить доступ к низкоуровневой сети на разных платформах единообразным способом.

1 голос
/ 20 декабря 2010

Если вы можете выдержать ужасное оправдание языка, используйте Javascript.

1 голос
/ 20 декабря 2010

Полагаю, вы говорите о нативных (не веб-) приложениях.Чтобы сделать HTTP-запросы GET / POST в Android, вам нужно взглянуть на HTTPClient .Эта библиотека Java поставляется с Android и позволяет разрабатывать необходимые функции:

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
try {
    HttpResponse response = client.execute(request);
    ...
} catch(Exception ex) {
    // handle
}

О том, как разработать общую сетевую библиотеку для iOS и Android, это интересный вопрос, я не могу понять,любое решение, потому что платформы имеют слишком много различий (Java против Objective C наиболее очевидна), но это было бы здорово.

Я могу сказать, что Android поддерживает код C / C ++ через NDK , но я не уверен, что это работает в iOS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...