2013-09-27 1 views
1

Как описано в Proguard-х troubleshooting page:Как включить rt.jar/classes.jar в конфигурацию Proguard в ОС независимо?

В MacOS X классы во время выполнения может быть в другом месте, чем на большинстве других платформ. Затем вам придется адаптировать вашу конфигурацию, заменив путь <java.home>/lib/rt.jar на <java.home>/../Classes/classes.jar.

Так, например, на не-Mac среде вы можете иметь следующее в вашем Proguard конфигурации:

-libraryjars <java.home>/lib/rt.jar 

Но для Mac среды вы хотели бы отметить classes.jar.


Это хорошо, если это только когда-либо разработана на Mac, но если этот код проверяется в систему управления версиями и совместно разработчиками на несколькими ОС, а также на сервере сборки под управлением другой ОС, она должна быть более гибким.

Есть ли способ настроить это в Proguard на работу независимо от того, на какой ОС он работает, не требуя от пользователя кода make filesystem changes?

ответ

0

Вы можете определить переменную системы, которая зависит от окружающей среды и использовать это:

-libraryjars <runtime.jar> 

Однако, если вы разрабатываете для Android:

  • Вы не должны относиться к rt.jar или classes.jar, поскольку они содержат много классов Java-среды выполнения, которых нет в среде выполнения Android.
  • Вы не должны указывать -libraryjars, так как процессы сборки Ant/Eclipse/Gradle автоматически задают все необходимые -injars, -outjars и -libraryjars.

Если вы видите предупреждения о недостающих классах Java-среды выполнения, вы должны рассмотреть вариант, например -dontwarn javax.**. См. Руководство ProGuard> Устранение неполадок>Warning: can't find referenced class.

Смежные вопросы