4

Cross platform Android/iOS apps以前は MonoTouch のみでビルドしていた をビルドし始めました。を評価していますMonoDroid

アプリは消費する必要がありJSON、使用したいと考えていますServiceStack。Xamarin には、私たちが使用している ServiceStack ブランチがあります - https://github.com/xamarin/ServiceStack

JSON の GET と POST を担当する共通のプロジェクトが必要です。Xamarin による ServiceStack にはdifferent DLLs for Android and iOS. single projectServiceStack を使用して JSON を取得するにはどうすればよいでしょうか?

統一された方法で JSON を取得するための他のオプションを受け入れますか?

4

2 に答える 2

4

概して、MonoTouch 固有の型に依存しない MonoTouch 用にコンパイルされたマネージ *.dll は、Mono for Android プロジェクトと互換性があります。

ServiceStack はその好例です。私は個人的に、Xamarin モバイル フレームワーク オファリング全体で複数のプロジェクトに使用してきました。

原則として、私は Web サービスへのすべての呼び出しを、FooProjectRestClient. そして、何らかのセグメンテーションが発生する必要がある場合は、#if 定義を使用して共有クラスで発生する可能性があります。

于 2012-03-08T20:39:56.443 に答える
3

MonoTouchおよびMono for Android 固有のライブラリが存在する理由は、多くの場合、(より小さい、Silverlight のような) プロファイルが利用可能であるためです (たとえば、新しい FX4.0 機能に依存するものは切り取る必要があります)。多くの場合、SILVERLIGHT(またはMONOTOUCH, MONODROID) が定義された状態で再コンパイルされた同じコードです。

MonoTouchのみの特定のライブラリの理由は、一般に、その環境 (iOS デバイス) が JIT を許可していないためです。そのため、コード生成 (例System.Reflection.Emit) やコードの動的 (ダウンロード) ロードはありません...ただし、(パフォーマンスの低い) 回避策を提供したり、いくつかの機能をスキップして、MonoTouch 用のライブラリの特別なバージョンを保持したりすることは、多くの場合可能です。

ここで、単一の共有アセンブリ/プロジェクトに戻ります。特別なMonoTouch アセンブリ (通常、MONOTOUCH定義済みで再コンパイルされた同じコード) は引き続き有効な.NET アセンブリであり、多くの場合、Mono for Android、Mono、または .NET で使用できます (一度再コンパイルすると、.NET を使用してもMONOTOUCH)。それは間違いなく最適ではありませんが、試すことができるものです。

もう 1 つは、複数のソリューション (MonoTouchApp、M4AndroidApp など) にわたって同じプロジェクト (MyLib など) を持ち、特別な構成 (iPhone|Debug のものと同じように) を使用して、異なる定義 ( MONOTOUCHiPhone*|* など) を設定することです。これにより、各プラットフォームで最適な機能の実装を維持できます (たとえば、同じ機能が異なる方法で実装されている場合)。

最初に後で (構成) を試してから、MonoTouch の特別なアセンブリを共有し、最後に (実際に機能しない場合) 他の代替案を探します。

于 2012-03-08T23:34:57.083 に答える