如何解决android b.a.a.b超时错误?

时间:2019-01-30 10:54:09

标签: java android retrofit2 okhttp

我有一个override func viewDidLoad() { super.viewDidLoad() self.collectionView.delegate = self self.collectionView.datasource = self self.collectionView.register(UINib(nibName: "WallPapersCell", bundle: nil), forCellWithReuseIdentifier: "WallPapersCell") } 应用程序,它通过androidokhttp连接到后端,以通过retrofit从后端获取数据。登录过程将在后端占用大量数据。但是,某些用户遇到了api错误。 b.a.a.b术语上的b.a.a.b是什么,因为我可以视为android的新手。图片如下

或者错误是

Android

这是改造和okhttp构建器代码

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

虽然登录过程是这样的,但我正在使用rxjava

 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();

某些用户(现场团队)发生此错误。他们无法登录(完成 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),但似乎并不能解决问题

编辑:因此,在跟踪混淆之后,b.a.a.b是retrofit2.adapter.rxjava.HttpException

1 个答案:

答案 0 :(得分:1)

在发布版本中启用minifyEnabled时,Android将使用名为Proguard的工具来混淆您的类。这使得它们在反编译时更难以让攻击者理解。 Proguard会使用您的类名称,变量和其他名称并进行更改。例如, MyNiceClass 变成 a 或其他看起来很奇怪的东西。您可以使用在app / build / outputs / mapping / appname / release中找到的mapping.txt跟踪更改。

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

您有一些选择

1)使用您的mapping.txt文件,尝试弄清楚正在谈论什么类(没什么好玩的。)

2)尝试并re-build your stacktrace(如果有):

3)使用Crashlytics(Firebase拥有)之类的工具在其中上传您的mapping.txt文件,它将重新构建完整的堆栈跟踪信息,以便于阅读。

所以简短的答案是没有人真的知道b.a.a.b代表什么。

您的问题:

这表示您的应用程序遇到超时看起来很简单。您做对了,增加了超时延迟,但是在某些时候,延迟变得太长,用户无法等待。

在发起网络请求之前,您是否检查用户已连接互联网?

您提到一个现场团队的用户,在坚固的wifi连接上进行测试与在移动信号上进行现场测试存在很大差异。您应该在连接速度非常慢的应用上运行一些测试,并查看其性能。您可能需要考虑使用较小的数据包或优化服务器响应。

希望有帮助。