无法在android中访问我的模块嵌套依赖项

时间:2018-05-15 06:01:16

标签: android module dependencies

我创建了一个具有类依赖关系的android模块,如下所示:

implementation 'com.squareup.moshi:moshi:1.5.0'
implementation 'com.neovisionaries:nv-websocket-client:2.3'

我将此模块添加到我的项目中。当我想使用它时,它说“无法访问com.neovisionaries.Adapter”。

  

1 - 为什么它无法访问因为我认为我的Async类在后台调用该方法?

     

2 - 我应该将该依赖项添加到我的项目中吗?

我的模块类

public class Async extends WebSocketAdapter {
   ....
public Async() {
}

public static Async getInstance(Context context) {
    if (instance == null) {
        sharedPrefs = context.getSharedPreferences(AsyncConstant.Constants.PREFERENCE, Context.MODE_PRIVATE);
        moshi = new Moshi.Builder().build();
        instance = new Async();
    }
    return instance;
}


public void webSocketConnect(String socketServerAddress, final String appId) {
        WebSocketFactory webSocketFactory = new WebSocketFactory();
        webSocketFactory.setVerifyHostname(false);
        setAppId(appId);
        setServerAddress(socketServerAddress);
        try {
            webSocket = webSocketFactory
                    .setConnectionTimeout(TIMEOUT)
                    .createSocket(socketServerAddress)
                    .addListener(this);
            webSocket.connectAsynchronously();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }}

MyPresenter类

public class SocketPresenter implements SocketContract.presenter {

private Async async;
private SocketContract.view view;
@Override
    public void connect(String socketServerAddress, String appId) {
        async.webSocketConnect(socketServerAddress, appId);
    }

此行的错误async.webSocketConnect(socketServerAddress, appId);表示websocketConnect无法访问我的模块依赖性。

1 个答案:

答案 0 :(得分:6)

当弃用Gradle compile关键字时,它被两个新关键字取代:implementationapiimplementation关键字将您的依赖关系保持在内部,而api会像旧的compile关键字那样公开它们。因此,您应该使用api代替implementation

请参阅documentation

中的详细信息