Unity2018.4はLTSだけどバージョンアップで破壊的変更されている

# 修正以外の変更内容

Unity2018.4.1以降に修正以外で変更された内容を抜き出しました。
LTSなのにBackwards Compatibility Breaking Changesなんて項目もありますね。

1. https://unity3d.com/unity/whats-new/2018.4.4
> Changes
> - Android: Android Gradle plugin version updated up to 3.4.
> - Android: Gradle version updated up to 5.1.1.

1. https://unity3d.com/unity/whats-new/2018.4.5
> Improvements
> - Version Control: Added "Overwrite Failed Checkout Assets" editor setting, turning it off makes unity not overwrite files that can't be checked out. (1010999, 1158593)

1. https://unity3d.com/unity/whats-new/2018.4.6
> Backwards Compatibility Breaking Changes
> - Apple TV: Remove support for Universal Harmony Remote, supporting this controller made Siri Remote and gamepads regrees by producing unintended double events for button clicks. For more information check UnityView+Keyboard.mm pressesBegan/pressesEnd functions.
>
> Improvements
> - XR: Updated Vuforia to version 8.3.8.

1. https://unity3d.com/unity/whats-new/2018.4.10
> Backwards Compatibility Breaking Changes
> - Android: Improve error messages for cases where android application fails to load libmain.so. Previously it was printing "Unable to find main", now it will print "Failed to load 'libmain.so', the application will terminate.", additionally it will print exception from System.loadLibrary with detailed info, where the application was looking for libmain.so
>
> Improvements
> - Graphics: Optimised Cluster Rendering networking.

1. https://unity3d.com/unity/whats-new/2018.4.14
> Changes
> - XR: Updated to Oculus 1.38 plugin and added support for valid tracking poses even when devices aren't fully tracked. (1197386)

1. https://unity3d.com/unity/beta/2018.4.16f1
> Changes
> - Package Manager: Changed the package installation process to no longer set package directories and files as read-only on disk. This prevents all sorts of possible corruption scenarios (e.g. read-only directories, partially-read-only packages in the package cache) and avoids some permission issues when removing packages.
> - Package Manager: Changed the package installation process to systematically revert packages to their original state. Note: this has the side-effect of actively reverting local modifications in immutable packages, which could previously be kept until the dependency was updated to a different version of the package. In order to preserve local changes, a package should first be [embedded in the project](https://docs.unity3d.com/Manual/upm-embed.html).
> 
> Improvements
> - Package Manager: Added support for configuring additional SSL certificate authorities, including self-signed certificates. See the [Unity Manual](https://docs.unity3d.com/Manual/upm-network.html#SSL) for more information on how to use this.
> - Package Manager: Added support for Git URLs with the SCP format (e.g. git@github.com/user/repo).
> - Package Manager: Added support for Git URLs without a trailing .git by using git:// URLs or prepending git+ to URLs (e.g. git+https://github.com/user/repo).
> - Package Manager: Added support for tarball-based dependencies (e.g. "file:.tgz").
> - Package Manager: Changed the UnityEditor.PackageManager.Client.Add method to make the @ prefix optional when adding Git-based dependencies and local dependencies (file:).
> - Package Manager: Reduced the amount of data transferred over the network when fetching package metadata from the registry.
> 
> Features
> - Multiplayer: Added UNET encryption support.

1. https://unity3d.com/unity/beta/2018.4.19f1
> API Changes
> - Particles: Added: Added NativeArray overloads to SetParticles and GetParticles
>
> Improvements
> - Editor: Greatly improves performance over large numbers of objects with RectTransforms, scene navigation is now very smooth. However actual picking is still very slow (no change). (1165982)
> - XR: Updated minimum version of Windows Mixed Reality package.

# リリースノートを調べた経緯

Unity2018.4.9f1とOculus Integration v1.37を使ったプロジェクトがあり、Unityのパッチバージョンを上げてみると実機で起動できなくなりました。
公式フォーラムやAnswersでも原因を特定できておらず藁にもすがる思いで各バージョンのリリースノートをたどると2018.4.14fに以下の変更がありプロジェクト内のバージョンより大きくなっていました。

> Changes
> - XR: Updated to Oculus 1.38 plugin and added support for valid tracking poses even when devices aren't fully tracked. (1197386)

恐らくこれが原因で2018.4.13f1でビルドしたものは起動できて2018.4.14f1でビルドしたものは起動できませんでした。
バージョンアップする時は下位互換性だけではなくライブラリのバージョンなど他の内容も確認が必要そうです。

<details><summary>色々なご意見</summary>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">まじか... <a href="https://t.co/CAs7fn8tV1">https://t.co/CAs7fn8tV1</a></p>&mdash; su10@ハイパーカジュアルゲーム開発 (@su10_dev) <a href="https://twitter.com/su10_dev/status/1238880965205708800?ref_src=twsrc%5Etfw">March 14, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">メチャクチャわかる…LTS(長期サポートするけど破壊的変更もする)<br>Unity2018.4はLTSだけどバージョンアップで破壊的変更されている <a href="https://t.co/gXPUAtceAf">https://t.co/gXPUAtceAf</a> <a href="https://twitter.com/hashtag/Qiita?src=hash&amp;ref_src=twsrc%5Etfw">#Qiita</a></p>&mdash; izm (@izm) <a href="https://twitter.com/izm/status/1238882827401187328?ref_src=twsrc%5Etfw">March 14, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">「LTSだから安心して上がるやろ」と思って上げると記事中にあるように統合されているSDKなどが影響して、たすけて！もなふわすい～とる～む！！ってなることもあり得るので注意せねばな...(自戒)</p>&mdash; mao (@TEST_H_) <a href="https://twitter.com/TEST_H_/status/1238883974492999680?ref_src=twsrc%5Etfw">March 14, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">HoloLens2の機能周りも19系列だけでなく、LTSでも使えるようにちょいちょい更新かかっていたりするからなぁ<br>単純な不具合修正だけじゃなくて他SDK、デバイスサポートも更新し続けてるのがLTS<br><br>Unity2018.4はLTSだけどバージョンアップで破壊的変更されている - Qiita <a href="https://t.co/ZesQqheLnw">https://t.co/ZesQqheLnw</a></p>&mdash; Decoc (@deco_c_) <a href="https://twitter.com/deco_c_/status/1238884218119151617?ref_src=twsrc%5Etfw">March 14, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">UnityのLTSってLTSの意味理解してんのか？って思うくらいには安定感がないんだよなぁ...<br><br>Unity2018.4はLTSだけどバージョンアップで破壊的変更されている <a href="https://t.co/VPlMOgfhvu">https://t.co/VPlMOgfhvu</a> <a href="https://twitter.com/hashtag/Qiita?src=hash&amp;ref_src=twsrc%5Etfw">#Qiita</a></p>&mdash; TechNΘ (@Techno1109) <a href="https://twitter.com/Techno1109/status/1238891952474447876?ref_src=twsrc%5Etfw">March 14, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Unity 2018.4は.16でAssetBundleの非同期ロードが止まってしまう破壊的破壊があったんですが、.18で治ったらしいです（これからテスト） <a href="https://t.co/mskEAGVqtP">https://t.co/mskEAGVqtP</a></p>&mdash; ichijo (@Takaaki_Ichijo) <a href="https://twitter.com/Takaaki_Ichijo/status/1238968051565039617?ref_src=twsrc%5Etfw">March 14, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">やっぱりバージョン上げるときはどんなときでも変更点を確認すべきだな</p>&mdash; たた (@pf35301) <a href="https://twitter.com/pf35301/status/1238992113787793408?ref_src=twsrc%5Etfw">March 15, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">「Unity 2018.4 LTS (Long Term Supported) (Stableとは言ってない)」不定期の気配</p>&mdash; 獏星(ばくすたー) / Megumi Baxter (@baku_dreameater) <a href="https://twitter.com/baku_dreameater/status/1239000057052971008?ref_src=twsrc%5Etfw">March 15, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">LTSは新機能が入らないというだけで、他のライブラリのバージョンに追従するためやセキュリティー的な対応で破壊的変更にならざるを得ないはしょうがないのかなぁと。まぁ、それでもパッチバージョン上げたら動かなくなるパターンは萎える…。</p>&mdash; なっつー@BNUT (@yashinut) <a href="https://twitter.com/yashinut/status/1239006880220901377?ref_src=twsrc%5Etfw">March 15, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Unityはセマンティックバージョニングではないし、後方互換完全に保って2年間パッチし続けるリリース管理は不可能に近いっていうか間違いなく不可能だろうからしゃーないね...辛いけどさ...　<a href="https://t.co/xgOALpdGrJ">https://t.co/xgOALpdGrJ</a></p>&mdash; Haruto Otake (@Trapezoid) <a href="https://twitter.com/Trapezoid/status/1239011754178306048?ref_src=twsrc%5Etfw">March 15, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">UnityのLTSは「新機能を勉強せずに最長2年間使える」程度の意味しか無いのでこういうリリースノート読まずに起動しないバグを出すレベルのチームほど使わない方が無難 <a href="https://t.co/Kb4lt2iuYc">https://t.co/Kb4lt2iuYc</a></p>&mdash; 野生の男 WILDMAN (@yasei_no_otoko) <a href="https://twitter.com/yasei_no_otoko/status/1239015982707789824?ref_src=twsrc%5Etfw">March 15, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">UnityのLTSでリリースノート見ないのはただの自殺志願者やぞ</p>&mdash; はるっちー (@hal_chi) <a href="https://twitter.com/hal_chi/status/1239118289663438848?ref_src=twsrc%5Etfw">March 15, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</details>