Kotlinで難読化 Proguardでハマった

Kotlinで新しいアプリを開発し、リリースする前に難読化をします。 その際にProguardというツールを使うのですがハマりにハマったので備忘録としてブログに残します。



Can't find common super class - LocationAvailability

エラーの原因はProguardが難読化する際に LocationAvailability のSuperClassである AbstractSafeParcelable が参照できないというもの。

ちなみに gradle にはFirebaseのサービスを利用するために

apply plugin: 'com.google.gms.google-services'

を使用しており、これが原因です。



proguard-rules.proの設定

設定は以下の様になっています。

-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**


-keep class android.app.Activity.** { *; }
-dontwarn android.app.Activity.**

しかし、このままだと AbstractSafeParcelable を参照しようとするため、エラーです。 ( AbstractSafeParcelablecom.google.android.gms.** 配下にあるのに。。。)



結論

gradleファイルに以下を追記します。

dependencies {
    ...
    implementation 'com.google.android.gms:play-services-location:16.0.0'
    ...
}

これでとりあえず動く様になりました。

0 コメント