2016-10-24 3 views
0

Je suis en train de créer une liaison pour la bibliothèque Facebook Notification .aar.Xamarin - .aar Java Binding - Le nom '[nom de la méthode]' n'existe pas dans le contexte actuel

Cependant, je reçois des erreurs de compilation:

enter image description here

code Gravité Description Suppression ligne du fichier de projet État Erreur CS0103 Le nom 'CreateAsset' n'existe pas dans le contexte actuel FBNotifications C: \ Utilisateurs \ jakub \ documents \ studio visuel 2015 \ Projets \ FBNotifications \ FBNotifications \ obj \ Libération \ generated \ src \ Com.Facebook.Notifications.Internal.Asset.Handlers.BitmapAssetHandler.cs 344 Actif

Code de gravité Description du projet État de suppression de ligne de fichier Erreur CS0103 Le nom 'CreateView' n'existe pas dans le contexte actuel FBNotifications C: \ Users \ jakub \ documents \ Visual Studio 2015 \ Projects \ FBNotifications \ FBNotifications \ obj \ Release \ produit \ src \ Com.Facebook.Notifications.Internal.Asset.Handlers.BitmapAssetHandler.cs 350 actif

les méthodes qui ont le problème suivent:

enter image description here

// This method is explicitly implemented as a member of an instantiated Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler 
     global::Java.Lang.Object global::Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler.CreateAsset (global::Org.Json.JSONObject p0, global::Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetCache p1) 
     { 
      return global::Java.Interop.JavaObjectExtensions.JavaCast<Java.Lang.Object>(CreateAsset (p0, p1)); 
     } 

     // This method is explicitly implemented as a member of an instantiated Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler 
     global::Android.Views.View global::Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler.CreateView (global::Java.Lang.Object p0, global::Android.Content.Context p1) 
     { 
      return CreateView (global::Java.Interop.JavaObjectExtensions.JavaCast<global::Com.Facebook.Notifications.Internal.Asset.Handlers.BitmapAssetHandler.BitmapAsset>(p0), p1); 
     } 

je peux voir que la question de code peut être fixé comme ceci:

// This method is explicitly implemented as a member of an instantiated Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler 
     global::Java.Lang.Object global::Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler.CreateAsset (global::Org.Json.JSONObject p0, global::Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetCache p1) 
     { 
      return global::Java.Interop.JavaObjectExtensions.JavaCast<Java.Lang.Object>(((AssetManager.IAssetHandler)this).CreateAsset (p0, p1)); 
     } 

    // This method is explicitly implemented as a member of an instantiated Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler 
    global::Android.Views.View global::Com.Facebook.Notifications.Internal.Asset.AssetManager.IAssetHandler.CreateView (global::Java.Lang.Object p0, global::Android.Content.Context p1) 
    { 
     return ((AssetManager.IAssetHandler)this).CreateView (global::Java.Interop.JavaObjectExtensions.JavaCast<global::Com.Facebook.Notifications.Internal.Asset.Handlers.BitmapAssetHandler.BitmapAsset>(p0), p1); 
    } 

Je pensais que la création d'une classe partielle pour BitmapAssetHandler et mettre là la méthode corrigée lors de son retrait dans metadata.xml fixerait mais ça ne semble pas être le cas.

<remove-node path="/api/package[@name='com.facebook.notifications.internal.asset.handlers']/class[@name='BitmapAssetHandler']/method[@name='CreateAsset']" /> 
    <remove-node path="/api/package[@name='com.facebook.notifications.internal.asset.handlers']/class[@name='BitmapAssetHandler']/method[@name='CreateView']" /> 

Si je fais cela, j'obtiens l'erreur que les méthodes existent deux fois (en quelque sorte qu'ils ne soient pas retirés du code généré). J'espère que ce n'est pas trop complexe d'un problème. Est-ce que mon approche est correcte? Ou faut-il faire quelque chose d'autre pour pouvoir le faire fonctionner?

Répondre

0

remove-node élément fait l'affaire.

<remove-node path="/api/package[@name='com.facebook.notifications.internal.asset.handlers']/class[@name='BitmapAssetHandler']" />