Marmalade SDK is a cross-compiler, cross-platform framework that allows one to develop Iphone applications from Windows. Marmalade has a cross-compiler that is able to generate valid signed IPAs directly from a local windows computer without requiring a Mac or a remote build service. I know of some "open toolchains" that are able to cross-compile applications but these toolchains are not compatible with Iphone licensing. Anyone has any idea of how Marmalade's cross-compiler works? How did marmalade develop a cross-compiler that is compatible with Iphone SDK licensing? What compiler do they use to cross-compile? Did they use an open source compiler and customized it? How do they link with a "portable-OS-wrapper" that is compatible with Iphone licensing?
Marmalade is like a virtual OS.
It generates code that targets Marmalade ARM or x86 So code created on Windows targets Marmalade and does not know anything about iOS.
Marmalade code can't call OS directly. It can call EDK extensions only.
EDK extension provides interface for Marmalade and implementation for a set of Platforms: iOS, Android, Windows, etc
Marmalade has loaders for each platform. Loader loads Marmalade code that is same for iOS, Android, Bada and other ARM platforms
iOS loader is close source compiled object by Marmalade team on iOS.
EDK extensions for iOS and iOS Loader are compiled in XCode on Mac.
What I know is Marmalade uses GCC compiler
to compile the code to ipa. While deploying the build, Marmalade
uses the certificates
and keys
in your Marmalade certificates
folder. DrMop
explains the certificates generation using key from Marmalade and Provision profiles from Apple's provisioning portal
.
In the Deploy tool
, all the bin files, compiled extensions, certificates and provisioned are merged and archived into ipa file. I don't think Marmalade has made the ipa creation technique public yet.
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).
© 2022 - 2024 — McMap. All rights reserved.