微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当 minifyEnabled 设置为 true 时,Rxjava3 无法按预期工作

如何解决当 minifyEnabled 设置为 true 时,Rxjava3 无法按预期工作

当我将 build.gradle 中的 minifyEnabled 设置为 true 时,当我正确查看日志和 API 响应时,似乎 rxjava3 突然无法按预期工作。

所以我要做的是创建一个空的新项目。

  1. 导入 Rxjava3 (3.0.13): implementation "io.reactivex.rxjava3:rxjava:3.0.13"

  2. 将构建类型更改为:

buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'
        }
        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'
        }
    }
  1. 将 MainActivity.java 的 onCreate 函数更改为以下内容
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Simply give me "Test"
        Single.just("Test")
                .subscribe(new SingleObserver<String>() {
                    @Override
                    public void onSubscribe(@NonNull disposable d) {

                    }

                    @Override
                    public void onSuccess(@NonNull String s) {
                        Log.d("TAG",s); // (s expect: "Test",get: null)
                    }

                    @Override
                    public void onError(@NonNull Throwable e) {

                    }
                });
    }
  1. 在 onSuccess 中设置断点,然后连接设备并按调试。
  2. 在 onSuccess 中,您将获得 null 而不是“Test”。

如果您将调试的 minifyEnabled 切换回 false,它将按预期工作。 我还在 proguard-rules.pre 文件添加了这些行:

##---------------Begin: proguard configuration for rxjava  ----------
-dontwarn java.util.concurrent.Flow*
##---------------End: proguard configuration for rxjava  ----------

它没有用。

有人可以告诉我从这里去的路吗?提前致谢。

解决方法

尝试在 Proguard 中添加它。

L = [9,1,[3,5],[3]]
indices = [2,1]
c = L.copy()
for i in indices:
    c = c[i]
print(c) #5

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。