Использование Proguard с библиотекой, которая использует пружину @auatured по имени
-
25-09-2019 - |
Вопрос
Я использую PROGUARD, чтобы запутать библиотеку, которая имеет несколько полей @auationired. Obfuscator переименовывает эти поля класса (потому что они являются частными / внутренними в классе), и, таким образом, моя фасоль не может существовать.
Предварительно запутанно:
@Service
public class LicenseServiceImpl implements LicenseService {
@Autowired(required = false)
LicenseSessionStore licenseSessionStore;
@Autowired(required = false)
LicenseStore licenseStore;
...
}
Post-pobfusmation:
@Service
public class LicenseServiceImpl implements LicenseService {
@Autowired(required=false)
LicenseSessionStore a;
@Autowired(required=false)
LicenseStore b;
...
}
Теперь, вероятно, много способов сделать эти особые поля, не заставляющие, но то, что я надеялся найти, был способ сказать PROGUARD, чтобы не запутать любые внутренние поля, которые аннотированы с важными источниками Spring-Isms (@autowired и т. Д.) Отказ
У кого-нибудь есть идея о том, как я могу сделать это?
Грант
Решение 2
Я не считаю это правильным ответом на мой вопрос и все равно как элегантный, общий раствор этой проблемы. То, что я размещаю, это мой временный обходной путь, который получил мне мимо моей проблемы в самой грубой силе, нецелегантном пути.
Я явно исключил эти предметы от запутывания, добавив их в опцию KeepClassMumberNames:
<option>-keepclassmembernames class * {com.common.license.LicenseSessionStore licenseSessionStore; com.common.license.LicenseStore licenseStore; }</option>
Это не является предпочтительным решением, поскольку это требует специфических названных переоценовений в каждом классе и станет техническим кошмаром.
Лучший ответ все еще нужен!
Грант
Другие советы
У меня было аналогичные названия классов удерживающих проблем для Annoted Class Class. Мое исправление было добавить следующее:
-keepclassmembers class * {
@org.simpleframework.xml.* *;
}
Я думаю, что что-то подобное будет работать для вас:
-keepclassmembers class * {
@org.springframework.beans.factory.annotation.* *;
}