Android proguard, держи внутренний класс Inner class
Основной вопрос: Android Proguard, держать внутренний класс
Моя проблема с внутренним классом внутреннего класса
Один из SDK в моем проекте Android имеет класс A, который имеет два статических внутренних класса. Они оказываются раздеты после применения Proguard.
public class A{
....
static class B{
...
static class D {
....
}
}
static class C{
...
}
}
Мой гвардеец выглядит так
-keepattributes Exceptions, InnerClasses
-keep class com.xxx.A
-keep class com.xxx.A$*
Что мешает классу B, C от proguard. Но не повезло с классом D. Я пытался -keep class com.xxx.A$**
также.
1 ответ
Я думаю, что вам не хватает спецификации класса, как показано в руководстве ProGuard.
Попробуйте заменить:
-keep class com.xxx.A
С:
-keep class com.xxx.** {*;}
Я использую это правило со следующим файлом, и он отлично работает на Android Studio 2.2.3 с инструментами сборки 25.0.1 (на тот случай, если они могут повлиять на используемую версию ProGuard)
A.java
package com.xxx;
public class A {
....
public class B {
....
public class C {
....
}
}
}
Как вы можете видеть, единственная реальная разница между моим файлом и вашим - это то, что мои внутренние классы являются открытыми и нестатичными.
Если это не сработает
Вы всегда можете использовать правило без подстановочных знаков. Следующее сделает свое дело:
-keep class com.xxx.A$B$D