Android: 缩小混淆动态访问 类

Android: minification obfuscating dynamically accessed classes

我正在使用 Samsung's Motion library 为三星手机制作计步器。当我在 gradle 配置文件中创建一个没有缩小的 APK 时,系统可以正常工作。但是,当我尝试在发布到商店之前应用缩小时,

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

我收到错误消息,声称某些库(例如 android.hardware.motion)不存在。 我检查过并且:

如果我删除该行 minifyEnabled 真 没报错,肯定是代码混淆了。

我已经尝试将

之类的语句添加到我的混淆器规则文件中
-keep class android.hardware.** { *; }
-keep class com.samsung.android.sdk.** { *; }

但这似乎不起作用。 任何的想法?谢谢!

缺少的类确实只能在实际设备上使用。 为了让 ProGuard 处理您的应用程序,您必须包含以下配置:

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

这将忽略来自 samsung sdk 的警告和注释。