4

Xamarin アプリケーションで Flurry を使用したいと考えています。そのためには、.jar ファイルである Android 用の Flurry Analytics を使用する必要があります。

そのために、バインディング ライブラリを作成し、FlurryAnalytics-4.2.0.jar を InputJar として含めました。しかし、ビルドした後、次のエラーが発生します。

Com.Flurry.Sdk.Eg' already defines a member called 'A' with the same parameter types

実際、Binding Library は、同じパラメーターを持つが内部のコードが異なる 'A' という 2 つのメソッドを生成します。

メソッドの 1 つを手動で削除しても機能しません。Metadata.xml ファイルに特別な行を追加すると、メソッドの名前が変更される場合がありますが、これらのメソッドの少なくとも 1 つが必要です (どのメソッドかはわかりません)。

この問題を解決する方法を知っている人はいますか?

4

2 に答える 2

0

Flurry は API を難読化しているため、すべての関数名は A、B、C、AA などです。Flurry は内部クラスを自由に使用します。C# には内部クラスがありません。Xamarin は、それらをカプセル化の外に移動することでそれらを偽造します。これにより、名前の競合が発生します。

明るい面は、Flurry のライブラリの大部分に直接アクセスする必要がないため、ラッパーは必要ないことです。Transforms フォルダーの Metadata.xml に次を追加して、内部を除外するように指示しました。

<metadata>
  <remove-node path="/api/package[@name='com.flurry.sdk']" />
  <remove-node path="/api/package[@name='com.flurry.android.impl.ads']" />
</metadata>

これは、それらの名前空間をラッパー ジェネレーターから除外するように指示します。

于 2015-01-14T06:00:23.030 に答える