FabioC
FabioC

Reputation: 462

Android: minification obfuscating dynamically accessed classes

I am using Samsung's Motion library to create a pedometer for Samsung phones. When I create an APK without minification in the gradle configuration file the system works. However when I try to apply minification before releasing to the store,

buildTypes {
    release {
        minifyEnabled true
        signingConfig signingConfigs.config
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        debuggable false
        jniDebuggable false
    }

I got errors claiming the some libraries (e.g. android.hardware.motion) do not exist. I have checked and:

If I remove the line minifyEnabled true I got no error, so it must be the code obfuscation.

I have tried to add to my proguard rules file statements such as

-keep class android.hardware.** { *; }
-keep class com.samsung.android.sdk.** { *; }

but this does not seem to work. Any idea? Thanks!

Upvotes: 0

Views: 545

Answers (1)

T. Neidhart
T. Neidhart

Reputation: 6200

The missing classes are indeed only available on the actual device. In order to let ProGuard process your application, you will have to include the following configuration:

-dontwarn com.samsung.android.sdk.motion.**
-dontnote com.samsung.android.sdk.motion.**

This will ignore the warnings and notes originating from the samsung sdk.

Upvotes: 1

Related Questions