開発環境の構築手順 †
インストールする順番を間違えると一からやり直さないといけない場合があるので注意。
開発環境としてはCarbide.c++ Expressを使うと無料で統合環境(IDE)が手に入るのでお勧めです。Carbide.c++自体はNokiaから提供されるEclipseベースの統合環境です。
環境構築の大きな流れは以下の通りです
- Carbide.c++のインストール
- Perlのインストール
- SDKのインストール
- Carbide.c++の起動
- エミュレータの日本語化
1:Carbide.c++のインストール †
2009年8月現在の最新版はVer2.0です。Window XP以降が対象。
古いバージョンのプロジェクトをインポートするとアップデータが起動しますが、場合によっては設定の細かい修正が必要なので要注意。
Carbide.c++は「ここ」からダウンロードできます。ダウンロードしたらインストールします。インストール時にエディションを聞かれますがすべて無償(参考)ですので最上位の「OEM Edition」を選択しても問題はありません。
2:Perlのインストール †
Carbide.c++のインストールが終わるとIEが起動して、Perlのインストールを促されます。リンクが張られているので、そこからインストーラーをダウンロードしてインストールします。Perlは指定されたバージョンのものをインストールします。インストール時は特にオプション等は変更する必要はありません。
(※旧バージョンではCTagsのインストールが必要でしたが、Carbide.c++ Ver1.3より新しいバージョンではインストール不要になりました。)
CTagsはダウンロードしたら解凍し、適当なフォルダ(例:C:\CTags56)に移動させます。場所が決まったら環境変数PATHにCTagsのパスを登録します(参考)(PATHに複数登録するときはセミコロンで区切る)。
3:SDKのインストール †
(※SDKをインストールする前にJAVAのランタイムを最新のものにした方が良いです。)
開発対象(S60 3rdとかUIQ3など…)のSDKをインストールします。インストーラーは自動的に起動したHTMLページの中にリンクが張ってあるのでそこから辿ってダウンロードします(逆に記述のないUIのSDKはCarbide.c++で使用することができません)。基本的にはどのSDKもインストーラーが用意されているので困る事は無いと思います。
SDKによってはインストール中に他のツールのインストールを促されることがありますが、良く分からなければとりあえずインストールしておけばよいです。インストール後に「デフォルトのSDKにしますか?」と聞かれますがCarbide.c++を利用する場合は特に気にする必要はありません(気になるならメインで開発するUIを指定しておきましょう)。あとJAVAのランタイムを使うものがあるのでJAVAのランタイムは最新の物にしておいた方が良いです。(※この後、コンパイルで失敗する事があれば環境変数PATHに「CSL Arm Toolchainのbinフォルダ」のパスを追加してみて下さい。)
S60 3rd SDKのお勧めのバージョンは? †
とりあえず「MR」を入れておけば問題ありません(2009年8月時点)。このバージョンはオプションで日本語表示にも対応しています。
S60 3rd FP1でエミュレータ起動時に「NCNList KERN-EXE 3」が出る場合 †
ここから「NCNList_fix.zip」をダウンロードしてパッチを充てると発生しなくなります。
コンパイル時にeikmenup.hの242行目でワーニングが出る †
ときどきコンパイル時に下記のようなエラーが出ることがあります。
//epoc32//include//eikmenup.h warning: enumeral mismatch in conditional expression: `TFalse’ vs `TTrue’
アウトプットを確認すると「eikmenup.hの242行目」がおかしいと出ているので見てみると「return (aText.Locate(TChar(KScaleableTextSeparator)) == KErrNotFound ? EFalse : ETrue);」という行があります。おそらく修正しなくても問題は無いと思いますが、どうしても気になる方はこれを「return !(aText.Locate(TChar(KScaleableTextSeparator)) == KErrNotFound);」のように三項演算子を使わないように書き直してやるとワーニングが収まります。ただしeikmenup.hはSDKが用意しているヘッダーなので修正は自己責任でお願いします。
S60 3rd FP1を再インストールした時に指定フォルダ名の語尾に数字が付く場合 †
一回でもSDKをアンインストールした状態で再度インストールしようとすると指定フォルダ名が「S60_3rd_FP1_2」とか語尾におまけがつくときがあります。そのままインストールするとCarbide.C++でプロジェクト再利用しようとすると絶対パスで指定されている値で不具合を起こす可能性があります。
インストール時に「S60_3rd_FP1」というフォルダでインストールさせたい場合は、レジストリエディタを起動して「\HKEY_LOCAL_MACHINE\SOFTWARE\Nokia\」から「S60_3rd_FP1」というキーを削除すると正常にインストールできるようになります。またバージョンによっては「\HKEY_LOCAL_MACHINE\SOFTWARE\Nokia\com.nokia.s60」を削除します。(ここを参照)
UIQ3 SDKのエミュレータ用スキン †
UIQ3の場合はP1i、P990i、M600i専用のエミュレータ用のスキンが用意されています。ただし見た目が変わるだけで中のUIが変わるわけではないので注意<ほとんど気分的なものです。
「ここ」からそれぞれの「Extension Package for UIQ 3 SDK」をダウンロードし、UIQ3のSDKをインストールした後でそれらをインストールします。インストール後にスタートメニューから「プログラム→UIQ 3 SDK→SDKConfig」を起動し、「Styles」タブからエミュレータのスタイルを選択します。もしリストに何も表示されなければ、「Devices」タブの「Change default device」でUIQ3を選択して下さい。
4:Carbide.c++の起動 †
初回起動時 †
初回起動時にワークスペース(プロジェクトを保存するためのフォルダ)を聞かれます。これは自分で管理のしやすいフォルダを指定します。二度とワークスペース指定ダイアログを起動時に表示させないようにするには「Use this as the default and do not ask again」にチェックを入れます。
その後、「Window→Preferences→Carbide.c++→SDK Preferences」を開き、インストールされたSDKが認識されているかを確認します。確認するとCarbide.c++の再起動を促される事があるので、その場合は指示に従って再起動します。リストにインストールしたSDKが並んでいれば開発環境の構築は終了です。もしなければSDKのインストールをやり直します。
Carbide.c++がエラーを表示して起動しない †
特定の条件下において、Carbide.c++を起動すると「VM terminated. Exit code=1」というエラーを表示して起動しない場合があります。この場合は暫定的な方法ではありますが、Carbide.c++のインストールフォルダにある「Carbide.c++.1.3.ini」というファイルをテキストエディタで開き、「-XX:MaxPermSize=96M」という行以外を削除してから起動するとうまくいくことが多いです。
ネットワークアップデート †
Carbide.c++はネットワークアップデート機能があります。そのまま使用しても問題は無さそうですが、気になる方はアップデートしましょう。
- 「Help→Software Updates→Find and Install」を選択。
- 「Search for updates of the currently installed features」を選択し、「Finish」を選択。
- ネットワークサーバーへの確認が開始します。(しばらくかかります)
- アクセス先の一覧が表示されるので適当なものを選択し、「Next」を選択する。このときに「auto select mirror(?)」にチェックを入れる。
- 「Search Results」と表示されたら「Next」を選択。
- 「Feature License」と表示されたら「I accept the terms in the license agreements」を選択して「Next」を選択。
- 「Installation」が表示されたら「Finish」を選択。インストールを開始します。(しばらくかかります)
- 途中で何か聞かれたら「Install All」を選択する。
- 終了すると再起動するかと聞かれるのでOKを押すと完了します。。
5:エミュレータの日本語化 †
各SDKに付属しているエミュレータは基本的には英語版になります。ですのでアプリケーション上から日本語を表示させようとすると文字化けを起こします。もし作成するアプリケーションで日本語を表示させたい場合は以下のような方法をとると日本語を表示させる事ができます。
S60 3rdの場合 †
S60 3rd SDKは日本語に対応しているバージョンがあります。もし対応していれば、スタートメニューから「S60 Developer Tools→3rd Edition FP1 SDK→1.0→Languages→Change to Japanese」でエミュレータが日本語版になります。日本語版は表示(メニュー含む)、入力(FEP)ともに日本語化されます。(うまく起動しないときはショートカットがリンク切れを起こしているか、JAVAのランタイムが古いor新しすぎるかもしれません<その為にSDKのインストール前にJAVAのランタイムを最新のものにしておくことをお勧めします。)
エミュレーターを起動したときに「Cannot start Ecmt Manager」というダイアログが表示されたときはこちらを参照してください。これでも解消されない場合は環境変数PATHにJAVA(内のbin?)へのパスを追加してみてください。
S60 5th(ver0.9)の場合 †
S60 5th(ver0.9) SDKは日本語環境が用意されているものの、切り替える方法が存在しません。もしS60 3rd SDKがインストールされているのであれば前述のショートカットをコピーし、プロパティで作業フォルダのパスを5thのものに合わせてから実行すると日本語環境に切り替えることが可能です。(おそらく後のバージョンでは修正されると思われます)
S60 5th(ver1.0)の場合 †
S60 5th(ver1.0) SDKではver0.9の時には存在した日本語環境が削除されていますので前述の方法が利用できません。日本語を表示させたい場合は「\epoc32\release\winscw\udeb\z\resource\fonts\」内の全てのフォントを差し替えます。面倒な場合は全て削除して有効にしたいフォントを1つ置いておけば表示は可能です。(名前はなんでもいいです)(念のため削除したフォントはバックアップを取っておくこと)
UIQ3の場合 †
UIQ3の場合は残念ながらSDKが日本語に対応していないので、自分で作成したアプリケーション上でのみ日本語を表示させる事が可能です。変更方法は実機の日本語化とほとんど同じで、「\epoc32\release\winscw\udeb\Z\Resource\Fonts\」内の全ての「TTFフォント」と「GDRフォント」を日本語フォントと差し替えます。
6:実機デバッグの方法 †
Carbide.c++ 2.0以降ではTRK(Target Resident KernelもしくはOn-Device Debugging(ODD)とも)が無料で使用できるようになりました。
以下にTRKの設定方法を記述しておきます。なお、実機との接続はUSBでもBluetoothでも可能です。
TRKの設定方法 †
参考PDF
開発環境のTips †
プロジェクトの保存方法やインポート方法 †
プロジェクトの保存方法 †
- Carbide.c++ 1.3以降
- ワークスペース内から該当するプロジェクトをフォルダごとバックアップを取る。(1.3以降ではプロジェクトフォルダ内にゴミを作らなくなったので削除の必要性は無くなった。)
- Carbide.c++ 1.2以前
- ワークスペース内から該当するプロジェクトフォルダのバックアップを取る。
- その際、プロジェクトで作成したコード以外は「.cdtbuild」「.cdtproject」「.project」はインポート時に利用されるので一緒に保存しておく事。「.generated」と「.settings」、プロジェクトタイプ名(S60 3.1 Emulator Debug [S60_3rd_FP1]とか)のフォルダは削除しても良い。
プロジェクトのインポート方法(Carbide.c++ 1.x->1.3) †
- バックアップしたプロジェクトフォルダをワークスペース内にコピーする。(その際、フォルダ名を変更しているならバックアップ時と同じ名前に戻す事)
- 「File→Inport→Existing Projects into Workspace」を選択し、「Browse」ボタンで該当フォルダを選択する。
- プロジェクトが正しい構成で保存されていたら「Projects」リストにプロジェクト名が表示されるので「Finish」ボタンを押して完了する。
プロジェクトのインポート方法(S60 3rd->5th) †
すでにプロジェクトがワークスペースに追加されているのであれば、プロジェクトを選択した状態で「Properties->Carbide.c++->Carbide Build Configurations->Active Configuration->Manageボタン」で5thを追加すればよい。Warningが出るもののコンパイルして実行することは可能。Warningの修正方法は不明。
プロジェクトのインポート方法(Carbide.c++以外のプロジェクト) †
Carbide.c++以外で作成されたプロジェクト(レガシーなものとかや後述のOpenGL ESのサンプルコードなど)のインポート方法は以下の通りです。
- 「File→Import→Symbian Bld.Inf」を選択
- 「Browse」ボタンを押してサンプルコードのBld.Inf(だいたいgroupフォルダにいます)を選択する。「Copy source files into workspace」にはチェックを入れておくこと。
- 「SDKs」には適当なSDKを選択(デフォルトでOK)してNextを押す。
- リストにMMPファイルが青字で表示されていればNextを押す。
- 「SDKs and Build Configurations」という項が表示されたら適切なものを選択しておく。通常であれば「Emulator Debug」と「Phone (GCCE) Release」があれば十分。
- インポートが完了するのでコンパイルする。あとはエミュレータ上で
- ちなみに実機向けにはPKGファイルがインポートされないので自分で用意すること。そのままでコンパイルするとEXEまでしか作ってくれません。プロジェクトにSISというフォルダを用意してその中に「*.pkg」を入れるとコンパイル時に読み込んでSISを作ってくれます。
エミュレータからインターネット接続ができない(UIQ3) †
m-Router(PC Suite for Sony Ericssonインストール時に一緒にインストールされます)が入っていなければインストールしてみる。
エミュレータのIPの設定にはuiqenvコマンドが利用可能。(参考資料(PDF))
N97 SDK v1.0のデバッグモード時にステップ実行したときにエラーメッセージが出る場合 †
N97 SDK v1.0でエミュレータ使用時にデバッグモードでステップ実行したときに「ウィンドウズにディスクがありません-Exception Procesing Message c0000013」というエラーメッセージが表示される場合は、ウィルスバスターなどのアンチウィルスソフトを疑ってみる(自分の環境ではウィルスバスター2010が原因だった)。
自分が最初に遭遇したときはNokia関連のソフトウェア(PC Suite含む)をすべて削除してから再構築するまで現象は収まらなかった。<その後、ウィルスバスター2010を入れてから再発したときは、ウィルスバスター2010をアンインストールするだけで現象は収まった。
過去にCarbide.c++ v1.1とウィルスバスター(バージョンは失念)とで似たような問題が発生したことがある。
OpenGL ES SDKの導入方法 †
ダウンロード †
UIQ3とS60 3rdではインストールするファイルが違います。UIQ3版はこちらでS60 3rd版はこちら(要ログイン)です。
インストール(UIQ3) †
(未検証)
インストール(S60 3rd) †
ダウンロードしたファイルを解凍するとインストーラーが出てくるので実行しする。途中でS60 3rd SDKをインストールしたフォルダを聞かれるので適切なフォルダを指定する。