библиотека dexguard не может зашифровать классы - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь зашифровать классы в моем проекте библиотеки 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

И мой Gradle для модуля:

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 голосов
/ 07 ноября 2018

Вы используете конфигурацию библиотеки по умолчанию: dexguard-library-release.pro, которая по умолчанию сохраняет все открытые / защищенные классы.

Вы не можете зашифровать сохраненные классы.

Чтобы решить эту проблему, используйте агрессивную конфигурацию: dexguard-library-release-aggressive.pro и укажите публичный API вашей библиотеки, который не следует скрывать.

Не забыл также использовать -repackageclasses com.mypackage.internal

чтобы переместить все запутанные классы в этот пакет.

...