2017-11-01 14 views
4

私のXamarin.AndroidアプリパッケージMvvmCross5.3.2から5.4にアップデートし、起動時にアプリがクラッシュすることがありました。手動で、理由がリンカーであることを確認しました - 私はlink SDK libs onlyオプションを有効にしています。 Noneオプションではうまく動作しますが、パッケージが2倍大きくなります。MvvmCross 5.4 ConsoleLogProviderでNullRefが発生したときにクラッシュする

'MvvmCross.Core.Platform.LogProviders.ConsoleLogProvider'のタイプイニシャライザが例外をスローしました。 ---> System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていない

+0

レポに問題を追加できますか:https://github.com/MvvmCross/MvvmCross? –

答えて

18

これはMvvmCross 5.4の既知のバグで、次のバージョンで修正されます。プロバイダーが依存するので

protected override MvxLogProviderType GetDefaultLogProviderType() 
    => MvxLogProviderType.None; 

EDIT

:ところで

は、回避策として、あなたはSetupクラスに行くとGetDefaultLogProviderTypeを上書きすることができますので、それはこのように、MvxLogProviderType.Noneを返します。あなたがIMvxLogでコンソールプロバイダを使用する場合は、単にLinkerPleaseInclude.csに含めます:

using System; 

//[...] 

public void Include(ConsoleColor color) 
{ 
    Console.Write(""); 
    Console.WriteLine(""); 
    color = Console.ForegroundColor; 
    Console.ForegroundColor = ConsoleColor.Red; 
    Console.ForegroundColor = ConsoleColor.Yellow; 
    Console.ForegroundColor = ConsoleColor.Magenta; 
    Console.ForegroundColor = ConsoleColor.White; 
    Console.ForegroundColor = ConsoleColor.Gray; 
    Console.ForegroundColor = ConsoleColor.DarkGray; 
} 
+0

すぐにお返事ありがとうございます!そして実際には完全に機能する回避策。 –

+0

保護されたオーバーライドMvxLogProviderType GetDefaultLogProviderType() { return MvxLogProviderType.None; } – cfl

関連する問題