【问题标题】:Developing a shared Android / iOS network library开发一个共享的Android/iOS网络库
【发布时间】:2011-05-28 00:07:13
【问题描述】:

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

人们为网络功能做了什么?我似乎找不到任何关于在 Android 中发出 GET/POST HTTP 请求的资源。

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

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

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

【问题讨论】:

  • 呃,不清楚你想要实现什么,我只想问:你知道这个任务已经有几次尝试了,提供了一个 x 平台框架,例如让你用 html+js 编写你的应用程序,然后将它们构建成一个自定义应用程序,每个平台一个?

标签: android ios cross-platform


【解决方案1】:

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

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

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

  1. 编写一些概念验证代码,了解如何从两个平台链接库。考虑图书馆设计的局限性。
  2. 使用测试驱动开发方法将您的网络库开发为独立项目。也就是说,编写单元测试来驱动您的代码在开发过程中对其进行测试。
  3. 在 Android 和 iOS 项目的本机代码中编写包装类以隔离库代码。

此外,如前所述,Apple 可以使用 C/C++ 开发应用程序,只要它们使用 XCode 完成即可。去年他们甚至放宽了这一要求。

祝你好运

【讨论】:

    【解决方案2】:

    考虑到差异,这实际上是不可能的。编写 Blackberry/Android 共享库是一件很痛苦的事,而且它们都使用“Java”。

    如果你真的想做跨平台,那么你将用 javascript 编写网页,然后在设备上的 web-views 上交付它们。

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

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

    【讨论】:

    • 刚刚编辑了我的问题。我将在我的 Android 应用程序中使用 C/C++。
    • 虽然这简化了事情,但它似乎仍然是一种精神错乱的练习。维护两个库,一个用于 android,一个用于 iPhone,因为它们的 api 和编码风格如此不同,所以很可能比尝试组合它们的工作量更少。如果该库是供公众使用的,那么 android c++ 是一种罕见的东西,它几乎不像 java 方面那样有文档记录或公开。
    【解决方案3】:

    我想您是在谈论本机(不是基于 Web)的应用程序。要在 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。

    【讨论】:

    • 如果我用 C/C++ 开发我所有的网络代码怎么办? iOS 和 Android 不支持吗?
    • 是的,我想是的,但我相信你会遇到很多问题(不要问我为什么)。 Android 通过 NDK 和 iOS 我不确定如何将 C/C++ 交叉编译到 iPhone ARM,因为我从未尝试过。
    【解决方案4】:

    你可以试试Titanium,源代码是JS,然后交叉编译到iOS或Android。

    【讨论】:

      【解决方案5】:

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

      【讨论】:

      • 刚刚编辑了我的问题。我将在我的 Android 应用程序中使用 C/C++。
      • 不要认为它无论如何都行得通,你知道苹果是如何使用 API 访问等等的。祝你好运!
      • @Moshe - Apple 完全可以在 iOS 应用程序中使用 C、C++ 和 Objective-C 编译代码。毕竟,Obj-C 只是 C 的超集。
      • @mark - 是的,但他们可能在访问网络硬件时遇到问题。如果您确实有所进展,请告诉我,我希望能够将信息从基于 iPad 的信息亭应用程序发送到本地 Android 手机...
      【解决方案6】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多