dexguard库无法加密类

时间:2018-11-07 11:28:41

标签: android dexguard

我尝试加密我的android库项目中的类。但是我不能那样做。变量和字符串由dexguard更改,但是-encryptclasses没有影响。我在构建输出中收到日志:

Warning: not encrypting kept class com.justexample.SomeClass1
Warning: not encrypting kept class com.justexample.SomeClass2
Warning: the configuration specifies to encrypt 2 classes that it keeps at the same time.
      Not encrypting those classes to avoid problems at runtime.
Note: inner class com.justexample.SomeClass1 is unencrypted, while its outer class is encrypted.
Note: inner class com.justexample.SomeClass2 is unencrypted, while its outer class is encrypted.
Note: one or more encrypted classes have unencrypted inner classes.

我的dexguard-project.txt是:

-verbose
-encryptstrings com.justexample.SomeClass1
-encryptclasses com.justexample.SomeClass1, com.justexample.SomeClass2

我对模块的认可:

apply plugin: 'com.android.library'
apply plugin: 'dexguard'

android {
compileSdkVersion 25
defaultConfig {
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 1
    versionName gitVersionName()
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFile getDefaultDexGuardFile('dexguard-library-release.pro')
        proguardFile 'dexguard-project.txt'

    }
}
sourceSets { main {
    assets.srcDirs = ['src/main/assets', 'src/androidTest/assets/']
} }
}

dependencies {
//my dependecies
}

1 个答案:

答案 0 :(得分:2)

您正在使用默认的库配置:dexguard-library-release.pro,它将默认保留所有公共/受保护的类。

您无法加密保留的类。

要解决该问题,请使用积极的配置:dexguard-library-release-aggressive.pro并指定不应混淆的库公共API。

不要忘记也使用-repackageclasses com.mypackage.internal

将所有混淆的类移入该程序包。