0

Facebook Notification .aar ライブラリのバインドを作成しようとしています。

ただし、コンパイル エラーが発生します。

ここに画像の説明を入力

重大度コード 説明 Project File Line Suppression State Error CS0103 The name 'CreateAsset' does not exist in the current context FBNotifications C:\Users\jakub\documents\visual studio 2015\Projects\FBNotifications\FBNotifications\obj\Release\generated\src\ Com.Facebook.Notifications.Internal.Asset.Handlers.BitmapAssetHandler.cs 344 アクティブ

重大度コード 説明 Project File Line Suppression State Error CS0103 The name 'CreateView' does not exist in the current context FBNotifications C:\Users\jakub\documents\visual studio 2015\Projects\FBNotifications\FBNotifications\obj\Release\generated\src\ Com.Facebook.Notifications.Internal.Asset.Handlers.BitmapAssetHandler.cs 350 アクティブ

問題のあるメソッドは次のとおりです。

ここに画像の説明を入力

// 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);
        }

コードの問題は次のように修正できることがわかります。

// 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);
    }

BitmapAssetHandler の部分クラスを作成し、Metadata.xmlで削除しながら修正されたメソッドをそこに配置すると修正されると考えましたが、そうではないようです。

<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']" />

これを行うと、メソッドが 2 回存在するというエラーが発生します (どういうわけか、生成されたコードから削除されません)。あまり複雑な問題ではないことを願っています。私のアプローチは正しいですか?または、それを機能させるために他に何かする必要がありますか。

4

1 に答える 1

1

remove-node要素がそのトリックを行います。

<remove-node path="/api/package[@name='com.facebook.notifications.internal.asset.handlers']/class[@name='BitmapAssetHandler']" />
于 2016-11-01T07:40:45.263 に答える