【问题标题】:When I made minifyEnabled = true the app not working with API当我设置 minifyEnabled = true 时,应用程序无法使用 API
【发布时间】:2021-10-20 07:49:21
【问题描述】:

我有一个大问题,我没有找到任何解决方案,当我在 Google play 中上传应用时,我发现了这个警告:

没有与此 App Bundle 关联的反混淆文件

经过研究,我发现了映射文件的问题,我 minifyEnabled = true 但是当我添加时我发现问题 Missing class: org.conscrypt.ConscryptHostnameVerifier 并且当我尝试打开应用程序时,当我尝试调用 API 时没有响应任何东西 我进行了很多搜索,但没有任何好处,我找到了所有解决方案,但我没有成功解决任何问题。有人有解决方案吗?

编辑 1:

当我调试错误时,我发现该方法中出现错误“指定为非空的参数为空:方法 j.u.b.e,参数消息”

protected fun <T> withLiveData(liveData: APILiveData<T>): SingleObserver<DataWrapper<T>> {
    return object : SingleObserver<DataWrapper<T>> {
        override fun onError(e: Throwable) {}
        override fun onSuccess(t: DataWrapper<T>) = liveData.postValue(t)
        override fun onSubscribe(d: Disposable) {
            compositeDisposable.add(d)
        }
    }
}

【问题讨论】:

  • 当我调试错误时,我发现错误“指定为非空的参数为空:方法 j.u.b.e, 参数消息”

标签: android android-studio


【解决方案1】:

添加minifyEnabled true 会混淆您的代码。通过对编译后的应用程序进行逆向工程,确保编写的代码无法被读取是一种安全措施。但是如果你没有添加正确的ProGuard 规则,它会弄乱你所有的应用程序。

您可以使用minifyEnabled false 构建应用程序并将捆绑包上传到 Play 并暂时忽略警告。但是开始搜索“Android Obfuscation”。

Shrink, obfuscate, and optimize your app

【讨论】:

    【解决方案2】:

    您必须添加 ProGuard 规则。当您将 minifyEnabled 设置为 true 时,它​​会检测到任何未使用的代码或库,并从您的最终 apk/aab 中忽略它们。因此,您应该将模型的数据类添加到 ProGuard。 检查这个Common Proguard Rules

    【讨论】:

    • 是的,我已经将此类 org.conscrypt.ConscryptHostnameVerifier 放在 ProGurad 中,但应用程序仍然没有调用任何 API
    【解决方案3】:

    经过大量搜索和大量尝试后,我发现了问题,但是当我输入 minifyEnabled = true 时非常困难,正如我提到的,我发现删除了很多类,我需要我去所有项目逐步检查该类是否已删除,如果已删除,则必须以相同的方式放入文件 progaurd-rules.pro 中

    -keepclassmembers class  io.reactivex.schedulers.Schedulers{
                                                          public *;
                                                       }
    

    但这需要很多次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-10
      • 2020-05-07
      • 2017-07-25
      • 2020-11-10
      • 2019-10-12
      • 2021-08-14
      相关资源
      最近更新 更多