読者です 読者をやめる 読者になる 読者になる

Unity5.3.3でファイルのタイムスタンプを更新しようとしたら一部のAndroidでハマった

unity android
                                                                       
File.SetLastWriteTime(outPath, lastModified.Value);

↑の関数でUnityでファイルのタイムスタンプを更新しようとしたらInvalidParameterって例外が出る端末があった。

再現性を調べたわけではないけど再現した端末はすべてAndroid4.2~4だった。

調べていくうちにXamarinでも似たようなエラー報告があることがわかって、おそらくXamarinのバグだろうって思ったのでAndroidのみAndroidJavaClassを使用して解決した。

  #if !UNITY_EDITOR && UNITY_ANDROID
                                        using(var file = new AndroidJavaObject("java.io.File", outPath)){
                                            var lm = lastModified.Value;
                                            var result = file.Call<bool>("setLastModified", lm.ToFileTimeUtc());
                                            Debug.LogFormat("{0}", result);
                                        }
                                        #else
                                        File.SetLastWriteTime(outPath, lastModified.Value);
                                        #endif

いまのところこれで問題は起きてない。