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
}}