Marmalade SDK 是一个交叉编译器、跨平台框架,允许从 Windows 开发 Iphone 应用程序。Marmalade 有一个交叉编译器,它能够直接从本地 Windows 计算机生成有效的签名 IPA,而无需 Mac 或远程构建服务。我知道一些能够交叉编译应用程序的“开放工具链”,但这些工具链与 Iphone 许可不兼容。有人知道 Marmalade 的交叉编译器是如何工作的吗?marmalade 是如何开发出兼容 Iphone SDK 许可的交叉编译器的?他们使用什么编译器进行交叉编译?他们是否使用了开源编译器并对其进行了定制?它们如何与兼容 Iphone 许可的“便携式操作系统包装器”链接?
3 回答
果酱就像一个虚拟操作系统。
它生成针对 Marmalade ARM 或 x86 的代码因此在 Windows 上创建的代码针对 Marmalade 并且对 iOS 一无所知。
果酱代码不能直接调用操作系统。它只能调用 EDK 扩展。
EDK 扩展为 Marmalade 和一组平台的实现提供接口:iOS、Android、Windows 等
Marmalade 为每个平台提供装载机。Loader 加载与 iOS、Android、Bada 和其他 ARM 平台相同的 Marmalade 代码
iOS loader 是 Marmalade 团队在 iOS 上的闭源编译对象。
iOS 和 iOS Loader 的 EDK 扩展在 Mac 上的 XCode 中编译。
我所知道的是 Marmalade 用于GCC compiler
将代码编译为 ipa。部署构建时,Marmalade
使用文件夹中的certificates
and 。解释了使用 Marmalade 中的密钥和 Apple 的 Provision 配置文件生成证书。 keys
Marmalade certificates
DrMop
provisioning portal
在 中Deploy tool
,所有的 bin 文件、编译的扩展、证书和配置文件都被合并并归档到 ipa 文件中。我认为 Marmalade 尚未公开 ipa 创作技术。
I'm not familiar with Marmelade specifically but there is not much proprietary in generating iOS code. LLVM/Clang as well as GCC are open source compiler environment and as such anybody could compile ARM code in objective C on almost any platform. The SDK however would have to be present to be able to include the header files and the frameworks to link agains them.
The code signing process at the end is just simple code signing. So as long as you have your Apple ID and code signing key stuff ready, its doable.
The complexity of all this is the same as if you would run a cross compiler on Platform X to compile code for Platform Y. The complexity might be to find out the specifics of the files around an application bundle such as the Entitlements.plist, the code signature's exact format etc. An IPA file at the end is a ZIP file of a directory containing the code, the resources, the signature and some other information such as the main Info.plist. So technically this can be done under any platform. If its practical or easy to maintain, is a completely other story.
Other options of course could be to simply use a virtual machine and then use your own byte code to run in this VM. Developer license agreements might exclude that if I remember correctly but if that clause is legally enforcable is another story. I know a few examples which break that rule such as a C64 or Atari game emulator (they are emulating the original CPU of those machines after all so a perfect example of a virtual machine).
My recommendation would be that if you do any serious IOS development, then do it on a Mac. Anything else would mean in case of trouble you would not get any support and it would be very difficult to find the correct answers. So you end up wasting more time that what its worth doing the same in Xcode with the expense of buying a mac (which at the same time can also be your windows and linux machine).