Java绑定:类型"..."在命名空间"..."中不存在.你错过了一个集会吗?

Fhl*_*Fhl 3 spotify xamarin java-binding

我正在尝试创建一个Xamarin Java绑定到Spotify Android SDK.SDK现在分为两部分,一部分用于身份验证,另一部分用于播放器.以前的java绑定工作,然而,秒给我一个错误.

最初的问题是在Xamarin论坛上提出的.


嗨,

我正在尝试为Spotify Android SDK创建一个绑定项目.

SDK分为两个.aar文件.一个用于身份验证,一个用于媒体播放(播放器).首先,我尝试在一个绑定项目中同时使用.aar文件,但是忽略了Player.aar.然而,将它移动到它自己似乎工作.

现在,我的问题是有关Java接口NativePlayerNotificationCallback,其产生的IPlayerNotificationCallback(因此缺乏OG通知),但在播放器类它试图实现:global::Com.Spotify.Android.Player.INativePlayerNotificationCallback.

INativePlayerNotificationCallback在反编译文件中找不到其他提及.只有IPlayerNotificationCallback.

我知道这有点难以想象.以下是JD-GUI中的java类文件:

JD-GUI

生成的文件列在这里: 在此输入图像描述

Com.Spotify.Sdk.Android.Player.IPlayerNotificationCallback.cs文件中:

在此输入图像描述

而错误信息本身

错误CS0234:namespaceCom.Spotify.Sdk.Android.Player中不存在类型或命名空间名称INativePlayerNotificationCallback'.你错过了装配参考吗?

在此输入图像描述

我真的很感激任何有关如何使其工作的见解.在我看来,界面的命名有一些不一致,但我不确定.

感谢你帮忙,弗雷德里克

Art*_*nov 9

应该通过向Player绑定项目添加元数据来修复:

<metadata>
  <attr path="/api/package[@name='com.spotify.sdk.android.player']/interface[@name='NativePlayerNotificationCallback']" name="visibility">public</attr>
</metadata>
Run Code Online (Sandbox Code Playgroud)

和Player类扩展(进入Additions目录):

using System.Collections;
using Java.Lang;
using Java.Util.Concurrent;

namespace Com.Spotify.Sdk.Android.Player
{
    public partial class Player
    {
        public IList InvokeAll(ICollection tasks)
        {
            return null;
        }

        public IList InvokeAll(ICollection tasks, long timeout, TimeUnit unit)
        {
            return null;
        }

        public Object InvokeAny(ICollection tasks)
        {
            return null;
        }

        public Object InvokeAny(ICollection tasks, long timeout, TimeUnit unit)
        {
            return null;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您可能需要通过调用泛型方法来正确实现这些方法.此外,我不得不向Auth库绑定项目添加元数据(我在旧主题中找到它)并从Player项目中引用了Auth项目,因为它使用了一些类(可能没有必要).