0

ブラックベリーの4.6バージョンと5.0バージョンで使用する必要があるプロジェクトがあります。4.6バージョンと5.0バージョンの両方で同じコードを実行し、コードにいくつかのプリプロセッサディレクティブを添付しました(Facebook sdkは4.6バージョンではサポートされていないため5.0で使用する必要がある#ifndefステートメント)2つの.codファイルがあります(1つは4.6およびその他の5.0)は、それぞれのシミュレーターで必要に応じて動作します。

しかし、4.6の.codファイルを5.0にロードすると(プリプロセッサ内のコードとしてコメントとして扱われます)、その逆を実行すると

つまり、5.0から4.6へ...それは...projectname-1.codが見つかりませんと言います。

同様の質問がここにも投稿されています。bbtoolへのコメントが可能であると言っているところをチェックしてください。 ブラックベリーの2つの異なるバージョン(4.6、4.7、5.0以降)の1つのビルド

4

1 に答える 1

2

プリプロセッサを使用することA SINGLE BUILDは、異なる BB OS バージョンを作成する方法ではありません (ビルドの準備に使用するツールに関係なく)。

プリプロセッサは、コード全体をコンパイル/ビルドする前に、指定された条件に基づいてコードの特定の部分を削除/追加するためにのみ使用されます。より一般的には、プリプロセッサは、条件ごとに異なる方法でソース コードを考慮するために使用されます。より一般的には、プリプロセッサは、条件ごとに異なるソース コードを生成するために使用されます。このような場合、プリプロセッサの範囲は、コードをコンパイル/ビルドするのみです...コードをビルドして実行可能ファイル/.cod/...などを取得した後ではありません。ファイル

T H E S Eリンクの最初の数行を読み取ります。これらはCプリプロセッサに関するものですが、基本はここでも適用できます。

コードが次のようになっているとします。

// START OF CODE
//#preprocess
// this is the second line of the code
//...
//#ifdef OS_5
import net.rim.device.api.ui.component.AutoCompleteField;
//#else
//don't import AutoCompleteField and import something else if needed
//#endif

//...
//... // some more codes
//...

//#ifdef OS_5
//...
//...
// Codes for using AutoCompleteField
//...
//...
//#else
//...
//...
// Codes for implementing AutoCompleteField another way by yourself
//...
//...

//...
//... // some more codes
//...
 // END OF CODE

コードのビルドに使用するツール (JDE、Eclipse、または Ant を使用) は関係ありません。プリプロセッサを使用してビルドすると'OS_5'(ツールがプリプロセッサを理解できる場合)、次のコードが生成されます。

// START OF CODE
// this is the second line of the code
//...
import net.rim.device.api.ui.component.AutoCompleteField;

//...
//... // some more codes
//...

//...
//...
// Codes for using AutoCompleteField
//...
//...

//...
//... // some more codes
//...
 // END OF CODE

.codファイルは上記のコードで生成されます。また、このファイルはOS 5 からサポートされて.codいるため、5.0 未満の BB OS バージョンでは実行できません。AutoCompleteField

プリプロセッサ「OS_5」または他のプリプロセッサなしでビルドすると、次のコードが生成されます。

// START OF CODE
// this is the second line of the code
//...
//don't import AutoCompleteField and import something else if needed

//...
//... // some more codes
//...


//...
//...
// Codes for implementing AutoCompleteField another way by yourself
//...
//...

//...
//... // some more codes
//...
 // END OF CODE

.codファイルは上記のコードを使用して生成され、これは前のファイルとは異なるファイルに.codなります。

A SINGLE BUILDBB OS がサポートするさまざまなデバイスを準備して正常に展開する場合はremove dependencies、コーディング中に必要があります。つまり、すべての OS バージョン (4.6、5.0... など) でサポートされている API クラスのみを使用する必要があります。 )。ただし、一部の機能を実装するために独自のコードを作成する必要がある場合があるため、場合によっては非常に困難な場合があります。

OS ごとに異なるビルドを準備する方が簡単です --- そのためには、もちろんプリプロセッサを使用できます。


簡単なことを非常に複雑な方法で説明してしまったのではないでしょうか。

于 2012-05-04T13:17:36.707 に答える