Marmalade SDKは、WindowsからiPhoneアプリケーションを開発できるようにするクロスコンパイラー、クロスプラットフォームフレームワークです。Marmaladeには、Macやリモートビルドサービスを必要とせずに、ローカルのWindowsコンピューターから直接有効な署名付きIPAを生成できるクロスコンパイラーがあります。アプリケーションをクロスコンパイルできる「オープンツールチェーン」をいくつか知っていますが、これらのツールチェーンはIphoneライセンスと互換性がありません。マーマレードのクロスコンパイラがどのように機能するかについて誰かが知っていますか?marmaladeは、iPhone SDKライセンスと互換性のあるクロスコンパイラをどのように開発しましたか?彼らはクロスコンパイルにどのコンパイラを使用していますか?彼らはオープンソースコンパイラを使用してカスタマイズしましたか?iPhoneのライセンスと互換性のある「ポータブルOSラッパー」とどのようにリンクしますか?
3 に答える
マーマレードは仮想OSのようなものです。
Marmalade ARMまたはx86をターゲットとするコードを生成するため、Windowsで作成されたコードはMarmaladeをターゲットとし、iOSについては何も知りません。
マーマレードコードはOSを直接呼び出すことはできません。EDK拡張機能のみを呼び出すことができます。
EDK拡張機能は、マーマレードのインターフェースと一連のプラットフォーム(iOS、Android、Windowsなど)の実装を提供します
マーマレードには、プラットフォームごとにローダーがあります。ローダーは、iOS、Android、Bada、およびその他のARMプラットフォームで同じMarmaladeコードをロードします
iOSローダーは、iOS上のMarmaladeチームによるクローズソースコンパイル済みオブジェクトです。
iOSおよびiOSローダーのEDK拡張機能は、MacのXCodeでコンパイルされます。
私が知っているのは、マーマレードがGCC compiler
コードをipaにコンパイルするために使用していることです。ビルドのデプロイ中に、フォルダー内のとをMarmalade
使用します。MarmaladeのキーとAppleのProvisionプロファイルを使用した証明書の生成について説明します。 certificates
keys
Marmalade certificates
DrMop
provisioning portal
ではDeploy tool
、すべてのbinファイル、コンパイルされた拡張機能、証明書、およびプロビジョニングがマージされ、ipaファイルにアーカイブされます。マーマレードがipa作成手法を公開したとは思いません。
私は特にマーマレードに精通していませんが、iOSコードの生成にプロプライエタリはあまりありません。LLVM / ClangとGCCはオープンソースのコンパイラ環境であるため、ほとんどすべてのプラットフォームで、誰でもObjectiveCでARMコードをコンパイルできます。ただし、ヘッダーファイルとそれらを再度リンクするフレームワークをインクルードできるようにするには、SDKが存在する必要があります。
最後のコード署名プロセスは、単純なコード署名です。Apple IDとコード署名の重要な要素が揃っている限り、それは実行可能です。
これらすべての複雑さは、プラットフォームXでクロスコンパイラを実行してプラットフォームYのコードをコンパイルする場合と同じです。複雑さは、Entitlements.plistなどのアプリケーションバンドルに関連するファイルの詳細を見つけることかもしれません。コード署名の正確な形式など。最後のIPAファイルは、コード、リソース、署名、およびメインのInfo.plistなどの他の情報を含むディレクトリのZIPファイルです。したがって、技術的には、これはどのプラットフォームでも実行できます。その実用的または保守が容易な場合は、まったく別の話です。
もちろん、他のオプションは、単に仮想マシンを使用してから、独自のバイトコードを使用してこのVMで実行することです。開発者ライセンス契約では、私が正しく覚えていればそれを除外するかもしれませんが、その条項が法的に強制可能である場合は別の話です。C64やAtariゲームエミュレーターなど、そのルールに違反するいくつかの例を知っています(これらは、結局のところ、これらのマシンの元のCPUをエミュレートしているため、仮想マシンの完璧な例です)。
私の推奨は、本格的なIOS開発を行う場合は、Macで行うことです。それ以外の場合は、問題が発生した場合にサポートが受けられず、正しい答えを見つけるのが非常に困難になります。そのため、Macを購入する費用をかけてXcodeで同じことを行う価値があることよりも多くの時間を無駄にすることになります(同時に、WindowsやLinuxマシンにもなります)。