Я создаю модуль 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 не может получить доступ к моей несетированной зависимости модуля.
Когда ключевое слово Gradle compile устарело, оно было заменено двумя новыми ключевыми словами: implementation и api. Ключевое слово implementation сохраняет ваши зависимости внутренними, в то время как api предоставляет их, как старое ключевое слово compile. Следовательно, вы должны использовать api вместо implementation.
См. Более подробную информацию в документация.
Модуль @SirCodesalot имеет другие зависимости (например, api ('io.socket: socket.io-client: 1.0.0')), и этот модуль загружен на Bintray. После успешной загрузки я получил зависимость от maven, такую как реализация 'com.sample.mysdk: 1.5.0'. Но когда я использую эту зависимость, я не получаю вложенный класс зависимостей.
Рад помочь :)