当 minifyEnabled 设置为 true 时,Rxjava3 无法按预期工作
Rxjava3 not working as expected when minifyEnabled set to true
当我将 build.gradle 中的 minifyEnabled 设置为 true 时,当我检查日志和 API 正确响应时,rxjava3 似乎突然无法按预期工作。
所以我要做的是创建一个空的新项目。
导入Rxjava3 (3.0.13):
implementation "io.reactivex.rxjava3:rxjava:3.0.13"
已将 buildTypes 更改为:
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'
}
}
- 将 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) {
}
});
}
- 在 onSuccess 中设置断点,然后连接设备并按调试。
- 在 onSuccess 中,您将得到 null 而不是“Test”。
如果将调试的 minifyEnabled 切换回 false,它将按预期工作。
我还在 proguard-rules.pre 文件中添加了这些行:
##---------------Begin: proguard configuration for rxjava ----------
-dontwarn java.util.concurrent.Flow*
##---------------End: proguard configuration for rxjava ----------
没用。
有人可以告诉我从这里走的路吗?提前谢谢你。
尝试在 Proguard 中添加它。
-dontwarn java.util.concurrent.**
当我将 build.gradle 中的 minifyEnabled 设置为 true 时,当我检查日志和 API 正确响应时,rxjava3 似乎突然无法按预期工作。
所以我要做的是创建一个空的新项目。
导入Rxjava3 (3.0.13):
implementation "io.reactivex.rxjava3:rxjava:3.0.13"
已将 buildTypes 更改为:
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'
}
}
- 将 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) {
}
});
}
- 在 onSuccess 中设置断点,然后连接设备并按调试。
- 在 onSuccess 中,您将得到 null 而不是“Test”。
如果将调试的 minifyEnabled 切换回 false,它将按预期工作。 我还在 proguard-rules.pre 文件中添加了这些行:
##---------------Begin: proguard configuration for rxjava ----------
-dontwarn java.util.concurrent.Flow*
##---------------End: proguard configuration for rxjava ----------
没用。
有人可以告诉我从这里走的路吗?提前谢谢你。
尝试在 Proguard 中添加它。
-dontwarn java.util.concurrent.**