Использование Proguard с библиотекой, которая использует пружину @auatured по имени

StackOverflow https://stackoverflow.com/questions/4400213

Вопрос

Я использую 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.* *;
} 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top