2016-05-16 1 views
3

J'ai hérité d'un ancien projet Xamarin, qui inclut Xamarin.Insights, et j'ai juste essayé de mettre à jour tous les paquets. Maintenant, il ne construira pas parce que le du problème suivant:`Xamarin.Insights.Initialize (string) 'est obsolète

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

Je suis en cours d'exécution de la Xamarin.Insights.Initialise("xxx"); dans la méthode Main() de la classe Application, tout comme il dit sur les instructions.

Toute aide serait grandement appréciée.

Répondre

2

EDIT:

Xamarin.Insights fourniront exception des rapports de votre projet de base sans une référence explicite, mais si vous faites des Insights explicites rapports appels dans le projet de base, vous laisserez seul cette référence .

Insights a bien changé il y a quelques temps pour avoir une initialisation spécifique à la plate-forme, comme l'indique l'erreur.

Si vous ajoutez une référence à vos projets Xamarin.iOS et Xamarin.Android, les choses devraient fonctionner comme avant, une fois que vous avez déplacé l'initialisation de Insights dans chaque démarrage spécifique à la plate-forme.

Voici une classe App d'un projet Xamarin.iOS qui montre l'initialisation de 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"); 
    } 
} 

Et la version 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); 
    } 
+1

Vous n'avez pas besoin d'enlever à partir de votre projet Core (comme vous pouvez toujours le signaler à partir de votre cœur). Vous avez juste besoin de faire l'initialisation dans les projets spécifiques à la plate-forme. – Johan

+0

@Johan Bon point! J'ai pris cela à partir d'une application où nous n'utilisons pas explicitement Insights. Je vais éditer ma réponse, merci pour le commentaire. –

+0

Merci pour la réponse complète - cependant, j'essaie définitivement de faire fonctionner les Insights à partir d'une bibliothèque spécifique à iOS, et non dans une bibliothèque PCL (ou même un projet partagé). Semble être seulement un problème avec le dernier paquet 1.12.3 (fonctionnait avant que je mis à jour). Bizarrement, il existe une autre version (plus ancienne) de Xamarin.Insights disponible via le gestionnaire de paquets NuGet, 1.8.3, qui fonctionne très bien. –