HSP : HSP3Dish / onion software 2012(c)

# HSP3Dish android(NDK)版 eclipse設定ガイド

1. はじめに
2. 環境の準備
3. サンプルプロジェクト
4. ソースのコンパイル
5. HSP3Dishの実行と設定
6. スクリプトの準備
7. データファイルの埋め込み
8. エラー発生時の対処

## はじめに

このマニュアルでは、android版のHSP3Dishをビルドするために、統合開発環境eclipseを使用するための手順を説明しています。
eclipseを使用したことのない人や、初めて使う方には、より簡易的なビルドを行なうためのツール、HSP3Dish Helperが用意されていますので、そちらをお使い頂くことを推奨しています。

## 環境の準備

androidの実機上で動作させるためには、以下が必要となります。

- 統合開発環境Eclipse
- android開発環境(SDK)
- JDK(Java Development Kit)
- Android NDK（Native Development Kit）開発環境
- Cygwin (Windows環境のみ)

開発環境はMac OS、Windowsの両方で用意されており、すべて無料で入手することができます。 ここまでに必要なプロセスは、通常のandroid/NDK開発と変わりません。詳しくは、ホームページ上の各種資料を参照してください。

    	参考:
    	Android開発環境の設定 - 次世代創造機構.jp
    	http://www.xn--rhq6sw9f0w7aevaf9ak89m.jp/android/androidLecture/install/install.html
    	Android NDK開発環境の設定 - 次世代創造機構.jp
    	http://www.xn--rhq6sw9f0w7aevaf9ak89m.jp/android/androidLecture/NdkInstall/NdkInstall.html

このドキュメントでは、これらの環境が実際に動作し、android実機にプログラムが転送できることを前提として、HSP3Dishの導入方法を解説します。 それまでの準備については、既存のマニュアル等をご覧ください。
使用する環境及びバージョンは以下を使用しています。

- 日本語 Eclipse / Pleiades All in One 日本語ディストリビューション( Eclipse 3.7 Indigo )
- Android SDK tools r15
- Android NDK r6b
- Cygwin 1.7.10
- JDK 6

android開発環境のインストールは、多くの手順と設定が必要になり簡単ではありません。 HSP3Dishを手軽に使用するまでにはハードルが高いため、今後より詳しい解説を用意していきたいと考えています。

## サンプルプロジェクト

androidフォルダには、HSP3Dishを使うための基礎となるhspprojプロジェクトが含まれています。 これは、HSP3.3フルセットに含まれているブロック崩しのHSP3Dishサンプル(block3.hsp)を、 android上で動作させるプロジェクトとなっています。

サンプルを閲覧する場合は、まずワークスペースにプロジェクトを追加します。
Eclipseを起動後、ファイル→インポートメニューを選択してください。

「一般→既存プロジェクトをワークスペースへ」を選択します。

hspprojフォルダの場所を指定します。

パッケージエクスプローラーにプロジェクトが表示されていれば成功です。

## ソースのコンパイル

プロジェクトのビルドを行なう際には、最初にNDK環境のコードをコンパイルする必要があります。 念のために、Eclipse上でプロジェクトのクリーン(初期化)を行なって、以前のビルド結果を破棄しておいてください。

Cソースコードのコンパイルは、Cygwin上で行ないます。(MacOSの場合は、ターミナル上)
Cygwinを起動して、プロジェクトのあるフォルダをカレントに設定し、ndk-buildコマンドを実行します。

    		(例: C:\android\hspproj がある場合)
    		cd c:/
    		cd android/hspproj
    		ndk-build

NDKが正しくインストールされ、Cygwinのパス設定なども正常な場合は、「jni/Android.mk」の設定に従ってコンパイルが行なわれます。 以下のように、hsptest1モジュールが生成されれば成功です。「libs/armeabi/libhsptest1.so」ファイルが生成されているはずです。

以上で、Cソースコードのコンパイルは完了となります。

## HSP3Dishの実行と設定

プロジェクトの実行を行なうことで、HSP3Dishランタイム上での動作を確認することができます。 通常のEclipseプロジェクトと同様に、実行環境を設定し、実行させることができます。 あらかじめ、Cソースコードをコンパイルして「libs/armeabi/libhsptest1.so」ファイルが生成されていることを確認してからビルドを行なってください。 (「自動的にビルド」のスイッチは切っておいた方が混乱がないでしょう)
まず、「実行」メニューの「実行構成」を選択し、設定ウィンドウを開きます。 次に、Androidアプリケーションの項目で、現在のプロジェクトを選択してください。 「ターゲット」タブで実行先の環境を選択することができます。手操作(Manual)にしておけば、最初の実行時に環境を確認することができます。

適切に設定を行なった上で、実行メニューの「実行」(またはツールバーのボタン)でビルド実行を行なってください。 最初の実行時は、デバイスの選択ウィンドウが表示されます。

上のリストに表示されているのは、接続されているAndroidデバイスを示しています。実機に転送する場合は、こちらを選択してください。 下に表示されているのは、Virtual Device(エミュレーター)です。エミュレーター上で実行する場合は、こちらを選択してください。 「Use same device for future launches」にチェックを入れておけば、次回以降は同じ設定で実行が行なわれます。

## スクリプトの準備

自分で作成したスクリプトを動作させる場合には、最初にWindows上でスクリプトをCソースコードに変換します。 HSP3.3同梱のスクリプトエディタで、「ツール」メニューから「指定ファイルをCソースに変換」メニューを選択してください。 ツールの画面が起動するので、任意のスクリプトを指定して「変換」ボタンを押してください。 この時、「出力ソースをUTF-8に変換」のチェックをONにしておくのを忘れないでください。
※HSP3.3フォルダにある、hsp3cnv.exe(HSP3ソースコンバーター)を最新版にするのを忘れないでください。最新版はHSP3Dish(このアーカイブ)に同梱されています。

正常に終了するとスクリプトと同じフォルダに拡張子が.cppのCソースファイルが作成されます。 これでスクリプトの準備は完了です。

    		hspproj/jni/hsp3embed/hspsource.cpp

上のファイルが、HSPスクリプト変換後の内容を保持しています。 この内容を置き換えることで、任意のスクリプトを実行させることができます。

    		hspproj/jni/hsp3/ndk/hgiox.cpp

また、上のファイルの、344,345行目の設定により、画面の表示サイズを調整することができます。

    		_scaleX = 0.5f;
    		_scaleY = 0.5f;

現状では、HSP3Dishの標準解像度(320x480)に合わせて、縦横2倍のサイズで表示される設定になっています。_scaleX、_scaleYの値を変更することで、画面に表示されるサイズを調整することができます。

## データファイルの埋め込み

スクリプトから読み込まれる画像などのデータファイルは、あらかじめWindows上でdpm形式のファイルとしてパックしたものを用意する必要があります。 dpm形式は、HSPが標準で使用するパッケージファイルです。 HSPサンプルフォルダ(hsp33/sample/misc/)にある、mkpack.hspスクリプトを使用することでdpmファイルを作成可能です。
現在のバージョンでは暗号化には対応していません、標準のdpmファイル(data.dpmというファイル名でHSPから認識されるもの)としてデータの作成を行なってください。

- 作成されたdpmファイル名をlibhsp3dish.soにリネーム
- libhsp3dish.soファイルを、Cソースコードのコンパイル完了後にlibs/armeabiフォルダにコピー
- Eclipse上でビルド実行を行なう

以上の手順により、最終的に生成されるパッケージ(apk)にデータファイル一式が組み込まれ、スクリプトから認識可能となります。 (Windows版のHSPで、dpmファイル内のファイルにアクセスする場合と同様です)

パッケージ名を変更した場合には、libhsp3dish.soが保存されるパスが変わるため hsp3r.cppソース内にある以下の行のパッケージ名(com.example.hsptest1)も合わせて変更するようにしてください。

    	dpm_ini( "/data/data/com.example.hsptest1/lib/libhsp3dish.so",0,-1,-1 );

## エラー発生時の対処

スクリプト実行時にファイルが見つからない場合や、エラーが発生するとコンソールにメッセージが出力されます。正しく認識していない場合は、LogCat等で確認してみてください。

ビルド時にエラーが出て実行ができない場合は、様々な要因が考えられます。 インストールがうまくいっていないか、設定が正しくないか、正しく反映されていないなどの可能性があります。 設定上で注意する点として、まずターゲットのバージョン設定と、それに対応したSDKがインストールされているかを確認するようにしてください。 この設定は、プロジェクトのプロパティーメニューを選択して現われる設定ダイアログの、Android項目に出てきます。

また、同様にビルドパスの項目にある、バージョン設定も正しいチェックされているかを確認してください。 (チェックを一度外してから、クリーンを行なって再度設定し直すことで正しく反映される場合があります)