Невозможно получить доступ к моему модулю вложенных зависимостей в Android - PullRequest
0 голосов
/ 15 мая 2018

Я создаю модуль 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 голосов
/ 15 мая 2018

Когда ключевое слово Gradle compile устарело, оно было заменено двумя новыми ключевыми словами: implementation и api. Ключевое слово implementation сохраняет ваши зависимости внутренними, в то время как api предоставляет их, как и старое ключевое слово compile. Поэтому вы должны использовать api вместо implementation.

Подробнее см. В документации .

...