【Fuse】プロジェクトファイルを活用しよう

アプリの署名情報を書いたり、外部JSファイルやアプリが依存しているパッケージを読み込んだりできる`.unoproj`ファイルですが、他にもいろいろ設定できるようですので、よく使いそうなものだけ少しピックアップしたいと思います。.unoprojの記述方法はJSON形式です。

基本的な情報は[こちら](https://www.fusetools.com/docs/basics/uno-projects)にまとまっています。

プロジェクトを作るとデフォルトで下記のような記述があります。

```sample.unoproj
{
  "RootNamespace":"",
  "Packages": [
  	"Fuse",
  	"FuseJS"
  ],
  "Includes": [
    "*"
  ]
}
```

#####RootNameSpace
そのままですが、ルートとなる名前空間を設定します。
#####Packages
アプリから参照されるパッケージです。ここに指定されるパッケージは、事前にコンパイルされたUnoプロジェクトを指します。（Unoについてはまったく知識がないので、後々勉強します。）
最初から含まれている`Fuse`と`FuseJS`は最低限必要なパッケージとなります。
#####Includes
ビルド時に、パッケージに含めるファイルを指定します。逆に除外したいファイルは`Excludes`で指定することができます。

```sample.unoproj
{
    "Includes": [
        "*.ux",
        "js/**/*.js",
        "SomeUnoClass.uno:Source",
        "ForeignCode.java:Java:android"
    ],
    "Excludes": [
        "js/ExcludeThisFilePlease.js",
        "node_modules/"
    ]
}
```

その他、一般的なものをまとめました。

#####Version
現在のアプリのバージョンを指定します。デフォルトは`0.0.0`です。

```sample.unoproj
{
    "Version": "1.2.9"
}
```

#####Mobile.ShowStatusbar
ステータスバーを表示するかどうかを指定します。デフォルトは`true`です。

```sample.unoproj
{
    "Mobile": {
        "ShowStatusbar": true
    }
}
```

#####Mobile.RunsInBackground
ホームボタンを押下した時に、バックグラウンドで動作させるかどうかを指定します。デフォルトは`true`です。

```sample.unoproj
{
    "Mobile": {
        "RunsInBackground": false
    }
}
```

#####Mobile.Orientations
アプリがサポートする端末の向きを指定したものに限定させることができます。指定できる値は下記の通り。

- Auto (デフォルト。すべての向きに対応)
- Portrait (縦)
- PortraitUpsideDown (ホームボタンが上の縦)
- Landscape  (横向き)
- LandscapeLeft　(ホームボタンが左)
- LandscapeRight　(ホームボタンが右)

```sample.unoproj
{
    "Mobile": {
        "Orientations": "Portrait"
    }
}
```

#####Android.Icons
Android固有のアプリアイコンを指定します。当然、各サイズに合わせた指定をすることができます。

```sample.unoproj
{
    "Android": {
        "Icons": {
            "LDPI": "Icon-ldpi.png",
            "MDPI": "Icon-mdpi.png",
            "HDPI": "Icon-hdpi.png",
            "XHDPI": "Icon-xhdpi.png",
            "XXHDPI": "Icon-xxhdpi.png",
            "XXXHDPI": "Icon-xxxhdpi.png"
        }
    }
}
```

#####Android.SDK
サポートする最小のAPIレベルや、コンパイルのレベルを設定します。

```sample.unoproj
{
    "Android": {
        "SDK": {
            "BuildToolsVersion": "23.0.0",
            "CompileVersion": 19,
            "MinVersion": 10,
            "TargetVersion": 19
        }
    }
}
```

#####iOS.Icons
iOSでのアプリアイコンを設定します。

```sample.unoproj
{
    "iOS": {
        "Icons": {
            "iPhone_29_2x": "Icon-iPhone-29@2x.png",
            "iPhone_29_3x": "Icon-iPhone-29@3x.png",
            "iPhone_40_2x": "Icon-iPhone-40@2x.png",
            "iPhone_40_3x": "Icon-iPhone-40@3x.png",
            "iPhone_60_2x": "Icon-iPhone-60@2x.png",
            "iPhone_60_3x": "Icon-iPhone-60@3x.png",
            "iPad_29_1x": "Icon-iPad-29@1x.png",
            "iPad_29_2x": "Icon-iPad-29@2x.png",
            "iPad_40_1x": "Icon-iPad-40@1x.png",
            "iPad_40_2x": "Icon-iPad-40@2x.png",
            "iPad_76_1x": "Icon-iPad-76@1x.png",
            "iPad_76_2x": "Icon-iPad-76@2x.png"
        }
    }
}
```

#####iOS.LaunchImages
iOSでスプラッシュスクリーンとして表示する画像を指定することができます。

```sample.unoproj
{
    "iOS": {
        "LaunchImages": {
            "iPhone_Portrait_2x": "...",   // 640x960
            "iPhone_Portrait_R4": "...",   // 640x1136
            "iPhone_Portrait_R47": "...",  // 750x1334
            "iPhone_Portrait_R55": "...",  // 1242x2208
            "iPhone_Landscape_R55": "...", // 2208x1242
            "iPad_Portrait_1x": "...",     // 768x1024
            "iPad_Portrait_2x": "...",     // 1536x2048
            "iPad_Landscape_1x": "...",    // 1024x768
            "iPad_Landscape_2x": "..."     // 2048x1536
        }
    }
}
```

#####iOS.DeploymentTarget
アプリが起動できる一番低いOSのバージョンを指定します。デフォルトは`8.0`です。(Fuseがサポートしているのも、8.0以上となります。)

```sample.unoproj
{
    "iOS": {
        "DeploymentTarget": "8.0"
    }
}
```

他のはちょっとわからないやつとかもあったので、調査します。