2017-10-26 8 views
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; 
} 
+0

これはparentActivity?.let ...が原因であるようです。 – neteinstein

+0

この解決策を見つけたことがありますか? –

答えて

0

Gradleの実装 "org.jetbrains.kotlin:kotlin-STDLIB-jre7:$ kotlin_version" に含める

$ kotlin_version = '1.1.51'

関連する問題