3

我继承了一个旧的 Xamarin 项目,其中包括 Xamarin.Insights,并且刚刚尝试更新了所有包。现在它不会构建,因为以下问题:

`Xamarin.Insights.Initialize(string)' is obsolete: `Insights must be initialized from a platform specific assembly'

我正在类Xamarin.Insights.Initialise("xxx");Main()方法中运行Application,就像它在说明中所说的那样。

任何帮助将不胜感激。

4

1 回答 1

2

编辑:

Xamarin.Insights 将在没有显式引用的情况下提供来自核心项目的异常报告,但如果您在核心项目中执行任何显式 Insights 报告调用,您将不理会该引用。

正如错误所示,Insights 确实改变了一段时间,以进行特定于平台的初始化。

如果添加对 Xamarin.iOS 和 Xamarin.Android 项目的引用,一旦将 Insights 初始化移动到每个特定于平台的启动中,事情应该会像以前一样工作。

下面是一个来自 Xamarin.iOS 项目的 App 类,它显示了 Xamarin.Insights 初始化:

public class App
{
    private static void Main(string[] args)
    {
        // Initialize metrics and crash tracking.
        Xamarin.Insights.Initialize(Forms.App.XamarinInsightsApiKey);

        // Launch UI.
        UIApplication.Main(args, null, "AppDelegate");
    }
}

和 Xamarin.Android 版本:

[Application]
public class MainApplication : Application, Application.IActivityLifecycleCallbacks
{
    #region Constructors

    public MainApplication(IntPtr handle, JniHandleOwnership transer)
      :base(handle, transer)
    {
        // Do not remove this work-around for a Xamarin linker issue related to SSL/TLS certificate trust. This line of
        // code prevents the linker from stripping out AES capabilities needed but not obvious because they are accessed
        // via reflection. Issue https://bugzilla.xamarin.com/show_bug.cgi?id=13998.
        // ReSharper disable once UnusedVariable
        var b = new System.Security.Cryptography.AesCryptoServiceProvider();

        NotificationToken = null;
    }

    #endregion Constructors

    #region Methods

    public override void OnCreate()
    {
        base.OnCreate();
        RegisterActivityLifecycleCallbacks(this);

        // Initialize metrics and crash tracking.
        Xamarin.Insights.Initialize(Forms.App.XamarinInsightsApiKey, ApplicationContext);
    }
于 2016-05-16T04:58:04.390 回答