2008-09-16 8 views
2

条件付きコンパイルでビルドスクリプトを使用してデバイスごとに別々のビルドを作成するのではなく、複数のモバイルデバイス用に1つのアプリケーションバイナリビルド(BREWプラットフォーム)を実行できますか?複数のモバイルデバイス用の単一アプリケーションビルド

特に、複数の画面解像度で1つのBREWアプリケーションビルドを使用することは可能ですか?

目的は、バイナリのビルドを1つだけ持つことです。単一のコードベースを持つだけであれば、条件付きコンパイルやスマートビルドスクリプトよりも便利です。

答えて

3

はい、以前の職場でこれを実行できました。しかし、必要なのは面倒です。

  1. 最小公約数のBREWバージョンでコンパイルしてください。バージョン1.1は、そこにある現在のすべてのハンドセットのベースです。
  2. コードで複数の解像度を処理できる必要があります。画面の幅と高さを検出する方法は、私の経験ではすべてのハンドセットで正確です。
  3. すべてのデバイスにすべてのリソースをロードする必要があります。これは、特定のデバイスの問題を回避するために独自のカスタムイメージローダーを作成する必要があります。サウンドに関しては、私はシンプルなMIDIタイプ0がすべてQCPで動作することを知っていますが、それは自分自身の経験ではありません。
  4. ビットマップフォントを使用します。フォントにデバイスの問題が多すぎるため、システムフォントを使用する価値があります。
  5. コード構造を有限状態マシンとして設計します。私はこれを十分に強調することはできません - これと多くの、多くの問題が実現することはありません。
  6. 各デバイスの問題ごとに回避策を用意してください。これは難しい部分です!これは可能ですが、このウサギの穴は非常に深いです...

最後に、アプリケーションが複雑で高度なものであるほど、このルートに行く可能性は低くなります。デバイスプロパティの中には、実行時にプラットフォームIDなどの信頼できるものを検出できない場合があります。そのため、複数のビルドが必要になります。

0

もう1つのアイデアは、画面の大きさに基づいて2〜4つのカテゴリに分割してビルドを作成することです。はるかに少ない複雑さでサポートしたいすべてのハンドセットをサポートできるようになるので、はるかに高速なルートです。

もう1つのことは、起動したいハンドセットのBREWバージョンです。 BREW 1.1が1台の端末に搭載されていて、ターゲット市場でわずかな割合で所有されているとしたら、それをサポートするためにはうまくいきません。

1

Javagroundで使用されているJ2MEからBREWへの変換を書きました。複数の解像度、単一バイナリコードを書くことは可能です。私たちは、デバイスのバグのデータベースを持っているので、プラットフォームIDを介してデバイスを検出し、タグ付けされたバグをマークする一連のフラグを生成することができます。たとえば、Motorola Brewのほとんどの電話機ではないにしても、電話に応答するまで着信がアプリケーションを中断させるバグがあります。そのため、TAPIを使用して着信を監視し、hideNotifyイベントを生成します生成されたコードは純粋なC++ですが、Javaをエミュレートします)。私はBREWバージョンのランタイム時にいくつかのチェックを行い、BREWではなくBREW 2の場合は特定のAPIを無効にします。

3Dタイプのゲームは、ソフトウェアでスケーリングしているので解像度が独立しています。

また、サウンド、IMEDIA、およびISOUNDPLAYER用の2つのAPIがあります.ISSUNDPLAYERは古いAPIであり、すべてのデバイスでサポートされていますが、IMEDIAを使用してマルチチャネルオーディオのみ行うことができます。 IMEDIAオブジェクトを作成し、IMEDIAオブジェクトを取得できない場合は、それを元に戻ってISOUNDPLAYERオブジェクトを作成します。

完全にユニバーサルなビルドの問題は、機能に大きな違いがあるため、いくつかのビルドを行う価値があることがあります。古いデバイスは1MBのヒープ(および小さな画面サイズ)あなたは6MB +(176x204以上)で多くを得る。

Brewでは、新しいデバイスの中にはタッチスクリーン(ポインタ入力を処理する必要があります)と回転スクリーンがありますが、Javaとは異なり、かなり一貫したキー値があります。

(あなたがファイルを復号化し、いくつかの本当にクールなアセンブリ言語のプレフィックスヘッダを書きたい場合を除きます)のファイルを意味ビッグエンディアンモードを使用する一部の古いNokiaの携帯電話は、通常のMODファイルと同じではありませんもあります