NativeBuild の変更点
[[FrontPage]]
----
#contents
----
* このページについて [#m7b01806]
NekoVMやFlashにビルドするときはうまくできるけれども、WindowsやAndroid、iOSなどネイティブ環境へのビルドがうまくいかないときの対処法をまとめています
** ネイティブ環境へのビルドがうまくいかない場合 [#e72123de]
最新のhxcpp(v3.2.205)ではビルドエラーが発生することがあります。
その場合は古いバージョンに戻すことで、正常にビルドできるようになります。
まずはバージョン番号の確認
$ haxelib list
hxcpp が v3.2.205 になっている
castle: [1.5.0]
flixel-addons: 1.1.1 [2.0.0]
flixel-demos: 1.1.2 [2.1.0]
flixel-templates: 1.0.2 [2.0.0]
flixel-tools: [1.1.2]
flixel-ui: 1.0.2 [2.0.0]
flixel: 3.3.12 [4.0.0]
hscript: [2.0.5]
hxcpp: 3.2.193 [3.2.205] # <-- v3.2.205
lime-samples: [2.6.0]
lime: 2.8.3 [2.9.0]
nape: [2.0.19]
openfl: 3.5.3 [3.6.0]
hxcppのバージョン確認
$ haxelib info hxcpp
v3.2.205が最新。v3.2.193が1つ前になっていることが確認できる
……
2015-11-06 07:47:28 3.2.193 : See Changes.md
2015-12-24 05:28:00 3.2.205 : See Changes.md
hxcpp の v3.2.193をインストール
$ haxelib install hxcpp 3.2.193
再びバージョンを確認
$ haxelib list
hxcppの現在のバージョンが v3.2.193 になっていればOK
castle: [1.5.0]
flixel-addons: 1.1.1 [2.0.0]
flixel-demos: 1.1.2 [2.1.0]
flixel-templates: 1.0.2 [2.0.0]
flixel-tools: [1.1.2]
flixel-ui: 1.0.2 [2.0.0]
flixel: 3.3.12 [4.0.0]
hscript: [2.0.5]
hxcpp: [3.2.193] 3.2.205 # <-- v3.2.193 がセットされていればOK
lime-samples: [2.6.0]
lime: 2.8.3 [2.9.0]
nape: [2.0.19]
openfl: 3.5.3 [3.6.0]
** 「flixel-ui is not compatible with Haxe 3.2.1 on the cpp target」というエラーメッセージが表示されてコンパイルできない [#b85c967d]
flixel-uiを使うと、Haxeのバージョンが「3.2.1」の場合にコンパイラのバグでビルドできないようです。そのためコンパイラを「3.2.0」に戻す必要があります。
「3.2.0」に戻すには、古いバージョンで上書きインストールするか、バイナリ(実行ファイル)を上書きすると古いバージョンに戻せます。
- [[Haxe 3.2.0 ダウンロードページ>http://haxe.org/download/version/3.2.0/]]
なお、このバグはすでに修正されているので、最新版「3.2.2〜」がリリースされれば直ると思われます。
なお、このバグはすでに修正されているので、最新版「3.3.0〜」がリリースされれば直ると思われます。
- [[[cpp] Missing field error with interface inheritance>https://github.com/HaxeFoundation/haxe/issues/4343]]
** キー入力(FlxG.keys)などでエラーが発生する [#f488e407]
モバイル環境(Androidなど)でビルドすると、キーボードやマウスの入力関係は無効(未定義)になります。そのため「#if FLX_NO_TOUCH」「#if mobile」などで処理を分ける必要があります。
#geshi(ActionScript3){{
#if !FLX_NO_TOUCH
// タッチ有効 (モバイル環境)
for (touch in FlxG.touches.list) {
if (touch.justPressed) {
// タッチした
}
}
#else
// PCやWebの場合
if(FlxG.mouse.justPressed) {
// クリックした
}
#end
}}