我继承了一个旧的Xamarin项目,其中包括Xamarin.Insights,并且刚刚尝试更新了所有软件包。现在它不会构建,因为以下问题:
`Xamarin.Insights.Initialize(string)' is obsolete: `Insights must be initialized from a platform specific assembly'
我在Xamarin.Insights.Initialise("xxx");
课程的Main()
方法中运行Application
,就像它在说明中所说的一样。
非常感谢任何帮助。
答案 0 :(得分: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);
}