繁体   English   中英

适用于iPhone和BlackBerry的共享库

[英]Shared Library for iPhone and BlackBerry

我有一组功能(类),我想与我正在为iPhone和Blackberry(Java)构建的应用程序共享。 有没有人有这方面的最佳做法?

就我理解你的问题而言,这是不可能的 - iPhone和Java的二进制格式不兼容 - 甚至对于黑莓设备上的本机库也是如此。

这与OS X的构建不同,在这种情况下,您可以使用Java,因为iPhone不支持Java。

最好的想法可能是在Objective-C中构建您的库,然后将其移植到Java,这比转向其他方式更容易。 如果您为Objective-C编程并确保代码没有内存泄漏 - 那么更改就不那么复杂了。

如果您保持类的结构相同,那么您应该发现维护更简单 - 修复Java中的错误,您应该很容易检查ObjC方法中的相同错误等。

希望这会有所帮助 - 对不起,这不是一个好消息。

正如Grouchal所说 - 您无法在两个平台之间共享应用程序的任何物理组件。 但是,如果您仔细将其分离为高度分离的层,则应该能够共享应用程序的逻辑设计。 这仍然是一个巨大的胜利,因为逻辑应用程序设计可能占您开发工作的很大一部分。

您可以将您使用的平台特定API(iPhone SDK等)的各个部分包装在您自己的界面中。 这样做可以有效地隐藏特定于平台的库,并在处理平台差异时使您的设计和代码更易于管理。

有了这个,您就可以编写核心应用程序代码,使其在任一平台上看起来都非常相似 - 即使它们是用不同的语言编写的。 我发现Java和Objective-C在概念上非常相似(至少在我使用它的层面上),并期望能够实现至少以下的奇偶校验:

  • 几乎相同的Java和Objective-C类,具有相同的名称和职责
  • 具有类似命名方法的Java / Objective-C类
  • 具有相同职责和逻辑实现的Java / Objective-C方法

仅这一点就可以使应用程序更容易跨平台理解。 当然,代码在边缘总是看起来非常不同 - 即当你开始处理视图,线程,网络等时。但是,这些问题将由你的API包装器处理,这些包装器一旦开发就应该具有相当静态的接口。

如果您以后开发需要交付到两个平台的更多应用程序,您可能也会受益,因为您可能会发现可以重用或扩展API包装器。

如果您正在编写客户端 - 服务器类型的应用程序,您还应该尝试在服务器上保留尽可能多的逻辑。 将设备上额外的业务逻辑数量保持在最低水平。 您可以将设备视为视图层的次数越多,就越不需要移植所有设备。

除此之外,遵循所有项目中相同的命名约定和包结构有很大帮助,特别是对于您的框架代码。

用于BlackBerry和iPhone的UI API和可用性范例是如此不同,以至于在大多数情况下在应用程序之间直接移植这种逻辑是不可能的。 (我认为)最大的错误就是尝试将为一个移动平台设计的用户体验移植到另一个移动平台上。 人们与黑莓手机和iPhone手机的互动方式非常不同,因此请准备好为您要部署的每个移动平台改进用户体验。

希望这是有帮助的。

可以编写适用于BB10 Native应用程序和iOS应用程序的C ++代码。 XCode需要将C ++文件视为ObjectiveCPP代码。

我正忙着在业余时间从事这项工作。 我还没有完成它足以显示或知道它是否真的可能,但我还没有进入任何路障。

您需要遵守纪律,编写优秀的跨平台代码,并针对特定于平台的功能进行抽象设计。

我的一般模式是我有“类Foo”做跨平台的东西,而“类FooPlatform”做平台特定的东西。 类“Foo”可以调用类“FooPlatform”,它抽象出任何特定于平台的东西。

原始的跨平台代码本身不能自行编译。 在各自的IDE中创建单独的BB10和XCode项目。 每个项目实现一个瘦(少[十几]行)“类FooPlatform”并引用原始跨平台代码。

当我得到一些我可以展示的东西时,我会在这里再次发布...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM