Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unity で Android 自動ビルドしたかった話 / I tried Android build of Unity using Docker, but...

Unity で Android 自動ビルドしたかった話 / I tried Android build of Unity using Docker, but...

Roppongi.unity #3 で発表 ( https://roppongiunity.connpass.com/event/129420/ )

speakerdeck はリンクのクリックができないので、
リンクをクリックしたい方はダウンロード、もしくは下のリンクへ
https://drive.google.com/open?id=1-5dTt6LCF_DbVGi3r8ekz4mEcllPRpCO

ハトネコエ

June 25, 2019
Tweet

More Decks by ハトネコエ

Other Decks in Technology

Transcript

  1. ϋτωίΤ
    UnityでAndroid
    自動ビルドしたかった話
    @nekonenene
    2019年6月25日

    View full-size slide

  2. ࣗݾ঺հ
    ハトネコエ
    • Twitter : @nekonenene
    • Github : nekonenene
    最近よ〜うやく

    インタラクティブミュージックの
    をやり始めました
    気持ちよさが追究されててすごい。

    View full-size slide

  3. Unityͷ͖͔͚ͬ
    5月のコミティアでサークルさんと立ち話
    「新作出ないんですか?」

    「プログラマーさんが都合つかなくて」

    「なにかアドバイス程度なら…」

    「もしかしてUnityやってくれますか」

    「と…とりあえず企画書ください!」
    からスタート。Unity何もわからない。
    テラシュールブログさん助かってます

    View full-size slide

  4. 話すこと
    1. 結論
    2. つらい Unity x Docker
    3. つらい Android ビルド
    4. そして私はどうしたか
    5. まとめ

    View full-size slide

  5. ݁࿦
    • 身も蓋もないですが

    Unity Cloud Build を使いましょう
    • まだ初心者だし、

    毎月9ドルを払うのはちょっと……

    とあがいた結果が、

    以降のスライドです

    View full-size slide

  6. ̎
    つらい Unity x Docker

    View full-size slide

  7. DockerΠϝʔδͷ༻ҙ
    • CircleCI を使うにしても

    wercker を使うにしても、

    Dockerイメージが必要です。
    • これを用意するのがとても大変です

    View full-size slide

  8. Unity x Docker
    • https://hub.docker.com/r/gableroux/
    unity3d がとても優秀
    • 自動ビルドによりUnity最新版が

    すぐにDocker Hubにプッシュされるよう
    になっています

    View full-size slide

  9. ͔͠͠……
    • https://gitlab.com/gableroux/
    unity3d-gitlab-ci-example に

    使い方が書かれているが大変……
    • 実際に手順を見てみましょう

    (上のリンクで書かれているものとやや
    異なります)

    View full-size slide

  10. ͓͓·͔ͳखॱ 1
    # UNITY_EMAIL, UNITY_PASS は登壇に合わせて設定済みです
    docker run -it --rm -w /root/project -v $(pwd):/root/project
    -e EMAIL=$UNITY_EMAIL -e PASS=$UNITY_PASS gableroux/unity3d:
    2019.1.7f1 /bin/bash
    xvfb-run --auto-servernum --server-args='-screen 0
    640x480x24' /opt/Unity/Editor/Unity -logFile /dev/stdout -
    batchmode -quit -username "$EMAIL" -password "$PASS"
    echo ' unity3d.alf
    ͜ΕΛ https://license.unity3d.com/manual ʹΞοϓϩʔυ

    View full-size slide

  11. ͓͓·͔ͳखॱ 2
    cp Unity_v2019.x.ulf /root/.local/share/unity3d/Unity/
    Unity_lic.ulf
    ʢUnityίϚϯυ͸ $HOME/.local/share/unity3d/Unity/Unity_lic.ulf Λ
    ୳͢ɻMac͸ /Library/Application\ Support/Unity/Unity_lic.ulfʣ
    xvfb-run --auto-servernum --server-args='-screen 0
    640x480x24' /opt/Unity/Editor/Unity -logFile /dev/stdout -
    batchmode -quit -buildOSXUniversalPlayer test.app
    # ライセンス正常(これが出力されるかが超大事!)
    LICENSE SYSTEM [2019625 0:39:31] Next license update check is
    after 2019-06-26T04:29:25

    View full-size slide

  12. खॱ͕໘౗ʂ
    • Dockerイメージがローカルで6GBもある
    だけで病みそうなのに、

    準備作業がCLIで完結しない!
    • しかもライセンスファイルが厄介で

    異なるDockerイメージでは使え

    なかったり色々ライセンスエラーが

    起きやすい! これは病む!

    View full-size slide

  13. ̏
    つらい Android ビルド

    View full-size slide

  14. AndroidϏϧυ͸໘౗
    • Androidビルドのためには

    JDKおよびAndroid SDKが必要
    • これらをDockerにインストールするのは
    なかなか難易度が高い
    • 参考 : https://hub.docker.com/r/
    circleci/android/dockerfile

    View full-size slide

  15. ਆ߱ྟͱࢥ͍͖΍…
    • gableroux/unity3d に、Android対応の
    Merge Request があり、それが

    5月に適応されて「よっしゃ!」と

    思ったけれど、残念ながらあれこれ試す
    も上手く行かず……
    • 上手くいった方いらっしゃいましたら

    方法教えてください・・・

    View full-size slide

  16. CIΛ͢ΔͳΒ
    • Dockerでがんばるのは、Unity, JDK,
    Android SDK をインストールするあたり
    で無理がある。ローカルでのサイズも
    7GB近くなりDockerらしくない
    • いらないPCで自宅サーバーを建てて、

    Jenkins などのCIツールを入れて

    git hook で動かすのが現実的では

    View full-size slide

  17. ̐
    そして私はどうしたか

    View full-size slide

  18. CI͸͖͋ΒΊͨ
    • CI導入をがんばるのを2日ほど続けた
    • 先ほどのような課題、および個人開発で
    あることを踏まえると、

    CIで便利になる時間よりもCI導入にかけ
    る時間の方が大きくなりそうだった

    View full-size slide

  19. ָ͔͠͠͸͍ͨ͠
    • ふだんの「Build Settings」は

    「PC, Mac & Linux Standalone」にし
    ておいて、キリのいいときだけAndroid
    ビルドをおこないたい
    • それを手動でやるのは面倒
    • Unity CLI は Unity.app 実行中は

    実行できない問題

    View full-size slide

  20. ͡Ό͋Ͳ͏͔ͨ͠ʁ
    Build
    Android
    ボタン!

    View full-size slide

  21. Build Android Ϙλϯ
    • Unity Editorは拡張が可能なので

    1. Platform を Android に Switch

    2. ビルド

    3. 元の Platform に Switch

    の一連の流れをおこなってくれる

    メニューアイテムを追加
    • お好みでショートカットも振れます

    View full-size slide

  22. Build Android Ϙλϯ
    • コードは私のブログを↓

    https://nekonenene.hatenablog.com/
    entry/2019/05/20/030642
    • より詳しく知りたくなった方は

    『Unity エディター拡張入門』を↓

    https://anchan828.github.io/editor-
    manual/web/index.html

    View full-size slide

  23. deploygate΁͸CLIͰ
    .PHONY: deploy
    deploy:
    dg deploy ./Build/MyApp.apk --message '$(shell git log -1
    --pretty=%B)'
    • 上のように Makefile に書いており、

    「make deploy」でデプロイしている
    • deploygateへ投げるのもUnity拡張で

    メニューアイテムにあると便利かも?

    View full-size slide

  24. ·ͱΊ
    • Unity, JDK, Android SDK、いずれも

    容量が大きくライセンスが絡むもので

    Dockerへのインストールとは相性悪い
    • CIをおこなうなら、Docker以外の手法も
    検討に入れると良さそう
    • CIが必要なら Unity Cloud Build に

    お金を払う価値は充分にある

    View full-size slide

  25. ࣭໰͸࠙਌ձͰ
    • 「CircleCI? deploygate?」とか

    疑問点が多かった方や、

    Editor拡張についてもっと知りたい方な
    ど、懇親会のお時間でぜひ。
    • 「うちは Unity Cloud Build 使わず
    CI 回せてるよ〜」って方いらっしゃい
    ましたら詳しく伺いたいです!

    View full-size slide