开发共享的Android / iOS网络库

时间:2010-12-19 23:06:20

标签: android ios cross-platform

我一直在主要开发iOS应用程序,但现在,我正在为iOS和Android开发应用程序。我尽可能地尝试编写与平台无关的代码。

人们为网络功能做了什么?我似乎无法找到任何有关在Android中进行GET / POST HTTP请求的资源。

您如何解决为iOS和Android开发共享网络库的问题。

编辑:我将使用C / C ++而不是Java来完成我的所有Android网络编程!

Android是否有任何C / C ++网络库(以后可用于iOS)?

6 个答案:

答案 0 :(得分:9)

我认为这不像大多数人听起来那样不可能。我最近采访了一位为大型移动游戏开发公司工作的人,他提到他们在C / C ++库中做了尽可能多的工作,以便在包括Android和iOS在内的多个平台上重用代码。我自己没试过,但我已经多次听过这个。

举个例子,看看这篇博文: http://thesoftwarerogue.blogspot.com/2010/05/porting-of-libcurl-to-android-os-using.html

如果cURL库可以在Android上使用,我不明白为什么你的网络库不能。由于您无法从C / C ++代码库访问平台SDK,因此很可能与GUI交互有关。但对于网络库,这是完全可以的。以下是我的建议:

  1. 编写一些概念证明代码,以了解如何从两个平台链接lib。考虑一下库设计的局限性。
  2. 使用测试驱动的开发方法将您的网络库开发为独立项目。也就是说,编写单元测试来驱动代码在开发时对其进行测试。
  3. 在Android和iOS项目的本机代码中编写包装类以隔离库代码。
  4. 此外,正如之前提到的,只要完成XCode,Apple就可以用C / C ++开发应用程序。他们去年甚至放宽了这个要求。

    祝你好运

答案 1 :(得分:1)

我想你是在谈论原生(不是基于网络)的应用程序。要在Android中进行GET / POST HTTP请求,您应该查看 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通过NDK支持C / C ++代码,但我不确定它是否适用于iOS。

答案 2 :(得分:1)

如果你能忍受一种语言的可怕借口,请使用Javascript。

答案 3 :(得分:1)

考虑到差异,这是不可能的。写一个Blackberry / Android共享库并且它们都使用“Java”是痛苦的。

如果您真的想要跨平台,那么您将使用javascript编写网页,然后在设备上的网络视图中提供这些网页。

你不能真正地在Objective C和Java之间共享代码,这是不可能的,你不能在iPhone上运行Java而你无法在Android上运行ObjectiveC。因此,使用本机代码无法做到这一点。

编辑:就网络而言,不要认为你会发现很多地方可以以统一的方式跨平台访问低级网络。

答案 4 :(得分:1)

正如其他人所说,如果可能的话,这并不容易。如果您决定尝试,我建议使用C / C ++,因为两个平台都可以处理该语言。 (iOS是Objective-C,如你所知,Android可以通过NDK处理C.)不要试图让Java在iOS上运行......

答案 5 :(得分:1)

您可以尝试Titanium,源代码在JS中,然后交叉编译到iOS或Android。