1
私はこのような機能を持っている:私は有効ProGuardのでビルドを作ってみるProguard:避けるために追加するルールは、参照クラスを見つけることができません。
private fun enableSearch() {
parentActivity?.let { parentActivity ->
parentActivity.searchParamsObs
//This is for the first time, to avoid having an empty trolley
.flatMap { searchParams ->
Observable.combineLatest(searchService.search(searchParams).toObservable(), orderItemsService.getCachedTrolleyOrRequest(),
BiFunction<SearchResults, TrolleyItemsResponse, SearchListResultsAndTrolley> { searchResults, trolleyItems ->
SearchListResultsAndTrolley(searchResults, trolleyItems)
})
}
.subscribeIO()
.observeMain()
.subscribe(
{ updateScreenWithSearch(it) },
{ e -> onSearchError(e) })
.addTo(disposables)
parentActivity.focusSearchView()
}
}
毎回:
com.my.package.features.search.fragments.ProductListFragment $ enableSearch $ 1 $ 1 $ 1:参照クラスを見つけることができません
com.my.package.features.search.fragments.ProductListFragment $ enableSearch $ 1 $ 1
私は問題をflatMapと特定しましたが、なぜそれが分かりませんか。
現在、私は、ProGuardの上、以下のProGuardの設定ファイルを持っている:
##########
# Android
##########
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-dontwarn android.databinding.**
-keep class android.databinding.** { *; }
-keepclassmembers class * extends android.content.Context {
public void *(android.view.View);
public void *(android.view.MenuItem);
}
-keep class android.support.v8.renderscript.** { *; }
##########
# View - Gets and setters - keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans
##########
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
##########
# Kotlin
##########
-dontwarn kotlin.**
-dontnote kotlin.**
-keepclassmembers class **$WhenMappings {
<fields>;
}
#Ignore null checks at runtime
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
static void checkParameterIsNotNull(java.lang.Object, java.lang.String);
}
##########
# RxJava
##########
-keep class rx.schedulers.Schedulers {
public static <methods>;
}
-keep class rx.schedulers.ImmediateScheduler {
public <methods>;
}
-keep class rx.schedulers.TestScheduler {
public <methods>;
}
-keep class rx.schedulers.Schedulers {
public static ** test();
}
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
long producerIndex;
long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
long producerNode;
long consumerNode;
}
これはparentActivity?.let ...が原因であるようです。 – neteinstein
この解決策を見つけたことがありますか? –