我们有一个相当丰富的电子学习应用程序,主要使用cocos2d构建。目前我们处于alpha状态并希望设置我们的项目结构,因此我们还可以构建一个Mac版本来定位Mac App商店。在UIKit中有大约80%的cocos2d和一些初始屏幕,必须移植到Mac(重写)。
从单一代码库中定位Mac和iOS应用商店的建议设置是什么?我假设选择是:
进一步复杂化的情况是我们目前使用cocos2d作为iOS应用程序的静态库。我们还有一个名为CoreInfrastructure的库,它包含我们在所有项目中使用的大量代码。最近我发现我可以创建一个项目来同时构建一个面向Mac的框架和一个基于相同代码库的iOS库。这是通过从框架项目开始并添加目标来为iOS构建静态库来完成的。
所以只是想得到每个人的意见和见解。有人知道在上述选择中要注意的任何警告吗?任何为Mac和iOS应用程序商店构建的人都会同时分享他们的结构吗?在我们的库代码中添加一个目标...也就是应用程序的方法吗?
是否存在任何选择存档和分发版本的问题?
提前致谢。
答案 0 :(得分:18)
WWDC会话"在iOS和OS X之间共享代码" 回答了本主题中的所有基本问题。 iWork 团队介绍了他们如何使用iOS和OS X的共享代码库创建Pages,Keynote和Numbers。
他们项目的关键是:
我鼓励观看视频或阅读本次会议的成绩单:
答案 1 :(得分:4)
我最近使用kstenerud's iOS Universal Framework构建了适用于iOS和Mac应用程序的共享框架代码库。在为iOS框架创建项目之后,我只需要为Cocoa框架手动添加目标。这样我就可以在框架中开发一次可共享代码,并将其链接到iOS和Mac应用程序中。您甚至可以使框架包含适用于iOS应用程序的UIKit特定代码和适用于Mac应用程序的AppKit特定代码。如果你有兴趣,我会在我的blog中写下这个。
答案 2 :(得分:3)
我只是为共享源使用多平台静态库目标。但是,您需要将其扩展为依赖项。如果您具有依赖于平台的实现,则可能需要为这些符号创建补充导出库。
所以你的结构可能采用这种形式:
OS X应用程序链接到CoreInfrastructure,PlatShared,PlatSpecific-OSX,OS X的Cocos和系统库。
iOS应用程序链接到CoreInfrastructure,PlatShared,PlatSpecific-iOS,适用于iOS的Cocos和sys libs。
问题(我发现)是,有很多人在Xcode中开发和维护复杂的项目结构没有太多/任何经验。设置重复目标并在它们增长时正确维护它们是一种痛苦(IMO) - 即使它们都引用相同的源文件也是如此。这就是为什么我更喜欢最小目标和适当的依赖结构。
答案 3 :(得分:3)
对于应用程序,使用两个单独的项目。如果他们共享库或框架,则在一个项目中使用iOS和Mac的多个目标非常有用。但是,在您的顶级应用程序中几乎没有任何共享。 UIKit代码需要完全重写才能使用AppKit,依赖关系会有所不同,甚至大多数项目设置都会有所不同。
当然,如果您真的想立即查看所有内容,可以将平台特定的应用程序项目和所有共享的依赖库/框架项目放在一个工作区中。这更像是一种工作作风的问题。如果你想经常在两者之间来回切换,这是最有意义的。如果您想简化您所看到的内容,可以将它们放在共享许多相同项目的单独工作区中。单独的工作空间的缺点是项目一次只能在一个工作空间中打开,因此您实际上一次只能在一个工作空间中工作。