Невозможно получить доступ к моей вложенной зависимости модуля в Android

Я создаю модуль Android с зависимостями классов, как показано ниже:

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

Я добавил этот модуль в свой проект. когда я хочу его использовать, он говорит, что «не могу получить доступ к com.neovisionaries.Adapter».

1 -Why it cannot access because I think that my Async class calls the method in the background?

2-Should I add that dependency to my project?

Мой класс модуля

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 не может получить доступ к моей несетированной зависимости модуля.

2
0
1 040
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

См. Более подробную информацию в документация.

Рад помочь :)

Sir Codesalot 15.05.2018 08:18

Модуль @SirCodesalot имеет другие зависимости (например, api ('io.socket: socket.io-client: 1.0.0')), и этот модуль загружен на Bintray. После успешной загрузки я получил зависимость от maven, такую ​​как реализация 'com.sample.mysdk: 1.5.0'. Но когда я использую эту зависимость, я не получаю вложенный класс зависимостей.

Shashank Gupta 06.01.2019 10:27

Другие вопросы по теме

Похожие вопросы

React Native - перемещение по двум экранам с использованием двух разных запросов на выборку
Анимируйте маркер в новое место, например анимацию убер-автомобиля, при изменении местоположения водителя (широта и долгота) на сервере
Раздутие неправильного макета вложенного фрагмента в TabLayout
Запись разговоров, вызов нескольких (повторяющихся) телефонных этапов и создание нескольких аудиофайлов
Вылетает при попытке открыть камеру android?
Что такое «Адаптивная батарея» и что это значит для разработчиков приложений?
Я создаю такое приложение, как Uber, но оно внезапно вылетало с ошибкой Ожидаемый BEGIN_ARRAY, но было STRING в строке 1, столбец 1, путь $
Добавить цифровую подпись в PDF, загруженный с удаленного сервера
Как отменить изменение текста EditText после показа сообщения?
Пример приложения Google ML Kit Barcode Scanner для Android не может обнаруживать штрих-коды