как решить ошибку времени ожидания Baab Android? - PullRequest
0 голосов
/ 30 января 2019

У меня есть приложение android, которое подключается к бэкэнду с okhttp и retrofit для получения данных через api от бэкэнда.Процесс входа в систему требует много данных на сервере.Однако некоторые пользователи столкнулись с ошибкой b.a.a.b.Что такое b.a.a.b на Android условиях, так как я могу считаться новичком на Android.изображение следующим образом

или ошибка

mulaiLogin() || ERROR: b.a.a.b: HTTP 504 Connection Timed Out

Вот код сборки и модернизации okhttp

 final OkHttpClient okHttpClient = new OkHttpClient.Builder()
          .readTimeout(timeout, TimeUnit.SECONDS)
          .connectTimeout(timeout, TimeUnit.SECONDS)
          .retryOnConnectionFailure(false)
          .build();

 retrofit = new Retrofit.Builder()
          .baseUrl(BuildConfig.JariBaseURL)
          .addConverterFactory(GsonConverterFactory.create())
          .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
          .client(okHttpClient)
          .build();

Хотя процесс входа в систему такой, я используюrxjava

 addSubscribe(apiStores.userLogin(body), new NetworkCallback<LoginResponse>() {
        @Override
        public void onSuccess(LoginResponse response) {
            MyLocalDB.setAPILogTable(activity.getApplicationContext(), "Login", gson.toJson(body),
                    response.getCode(), response.getDesc(), MyMethods.GenerateRef(new Date()),
                    "-");
            switch (response.getCode()) {....and so on

Эта ошибка произошла у некоторых пользователей (полевая команда).Они не могут войти (завершив API Login), в то время как большинство пользователей могут войти в систему успешно.

Я попытался увеличить размер timeout и установить retryOnConnectionFailure(false) на okhttp, но, похоже, это не решает проблему

РЕДАКТИРОВАТЬ: Итак, после отслеживания запутывания, baab является retrofit2.adapter.rxjava.HttpException

1 Ответ

0 голосов
/ 30 января 2019

Когда вы включаете minifyEnabled в своей сборке релиза, Android использует инструмент под названием Proguard, чтобы запутать ваши классы.Это усложняет понимание атакующим, когда они декомпилируются.Proguard берет ваши имена классов, переменные и другие и изменяет их.Например, MyNiceClass становится a или чем-то столь же странно выглядящим.Вы можете отслеживать изменения, используя файл mapping.txt, который находится в app / build / output / mapping / appname / release.

https://developer.android.com/studio/build/shrink-code

У вас есть несколько вариантов

1) Используйте свой файл mapping.txt и попытайтесь выяснить, о каких классах идет речь (не очень весело).

2) Попробуйте и пересоберите вашу трассировку стека (если у вас естьit):

3) Используйте инструмент, подобный Crashlytics (принадлежит Firebase), где вы загружаете свой файл mapping.txt, и он восстановит вашу полную трассировку стека для легкого чтения.

Итак, короткий ответ - никто точно не знает, что означает baab.

Ваша проблема:

Это говорит о том, что ваше приложение выглядит довольно просто.испытывает таймауты.Вы правильно сделали, увеличив задержку по таймауту, однако в какой-то момент задержка становится слишком большой, чтобы пользователь мог ждать.

Проверяете ли вы, что у пользователя есть интернет-соединение, прежде чем запускать сетевой запрос?

Вы упоминаете пользователей в полевой команде, есть большая разница в тестировании на надежном Wi-Fi-соединении и в поле на мобильном сигнале.Вам следует запустить несколько тестов для вашего приложения на очень медленном соединении и посмотреть, как оно работает.Возможно, вы захотите рассмотреть меньшие пакеты данных или оптимизировать отклик вашего сервера.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...