Marmalade SDK是一个跨编译器、跨平台的框架,允许用户从Windows开发Iphone应用程序。Marmalade有一个交叉编译器,能够直接从本地windows计算机生成有效的签名IPA,而不需要Mac或远程构建服务。我知道一些“开放工具链”能够交叉编译应用程序,但这些工具链与Iphone许可不兼容。有人知道Marmalade的交叉编译器是如何工作的吗?marmalade是如何开发出与Iphone SDK许可兼容的交叉编译器的?他们使用什么编译器来交叉编译?他们是否使用开源编译器并对其进行了定制?它们如何与与Iphone许可兼容的“可移植操作系统包装器”相链接?
发布于 2012-09-17 04:24:49
Marmalade就像一个虚拟操作系统。
它会生成针对Marmalade、ARM或x86的代码,因此在Windows上创建的代码针对的是Marmalade,并且对iOS一无所知。
Marmalade代码不能直接调用OS。它只能调用EDK扩展。
EDK扩展为Marmalade提供了接口,并在一系列平台上实现: iOS、安卓、Windows等
Marmalade为每个平台提供了加载器。加载器加载适用于iOS、安卓、Bada和其他ARM平台的Marmalade代码
iOS loader是由iOS上的Marmalade团队编写的闭源编译对象。
iOS和iOS Loader的EDK扩展是在Mac上的XCode中编译的。
发布于 2012-09-16 20:34:40
我所知道的是Marmalade使用GCC compiler将代码编译成ipa。在部署构建时,Marmalade使用Marmalade certificates文件夹中的certificates和keys。DrMop解释了使用来自Marmalade的密钥和来自苹果的provisioning portal的配置文件生成证书的过程。
在Deploy tool中,所有的bin文件、编译的扩展、证书和配置都合并并归档到ipa文件中。我不认为Marmalade已经公开了ipa创建技术。
发布于 2012-09-20 20:18:20
我对Marmelade并不特别熟悉,但是在生成iOS代码方面并没有太多的专有技术。LLVM/Clang和GCC都是开源的编译器环境,因此任何人都可以在几乎任何平台上用objective C编译ARM代码。然而,SDK必须存在,才能包含头文件和链接它们的框架。
最后的代码签名过程就是简单的代码签名。所以,只要你准备好了你的Apple ID和代码签名密钥,它就是可行的。
所有这一切的复杂性就像在X平台上运行交叉编译器来编译Y平台上的代码一样。复杂性可能是找出应用程序包周围文件的细节,如Entitlements.plist、代码签名的确切格式等。因此,从技术上讲,这可以在任何平台下完成。如果它实用或易于维护,则完全是另一回事。
当然,其他选择可以是简单地使用虚拟机,然后使用您自己的字节代码在此虚拟机中运行。如果我没记错的话,开发者许可协议可能会排除这一点,但如果该条款具有法律效力,那就另当别论了。我知道一些打破这一规则的例子,比如C64或Atari游戏模拟器(它们毕竟是模拟那些机器的原始CPU,所以这是一个完美的虚拟机例子)。
我的建议是,如果你做任何严肃的IOS开发,那就在Mac上做吧。其他任何事情都意味着在遇到麻烦的情况下,你将得不到任何支持,而且很难找到正确的答案。因此,你最终会浪费更多的时间,而不是花更多的时间去购买一台mac (同时也可以是你的windows和linux机器),在Xcode上做同样的事情。
https://stackoverflow.com/questions/12358323
复制相似问题