Часто задаваемые вопросы, которые вы указываете, касаются запутывания модулей NetBeans. Это довольно сложный вариант использования, поэтому я предполагаю, что это не обычное приложение , которое вас интересует.
Очень кратко: процесс запутывания изменяет имена классов, методов и полей, чтобы сделать его более сложным для обратного проектирования вашего приложения.
Это вызывает некоторые проблемы:
- JVM требует, чтобы ваше приложение имело общедоступный статический void main (строковые аргументы []) в публичном классе, поэтому вы должны сказать proguard не изменять это имя
- если вы используете какой-либо вид самоанализа, вы должны защитить соответствующие имена от изменения
- другие случаи , как объяснено в руководстве
Кроме того, proguard удаляет неиспользуемый код. Если у вас есть какие-либо классы, которые используются, но на которые нет прямой ссылки, вы должны -keep
их также.
Документация Proguard включает пример того, как запутать простое приложение. Вот пример объяснения (с некоторыми менее запутанными именами):
-injars application.jar # obfuscate all the classes in the named jars
-outjars obfuscated.jar # save all the obfuscated classes to the named jar
-libraryjars <java.home>/lib/rt.jar # these are all the libraries that the application uses
-printmapping obfuscation.map # save a file linking the original names to the obfuscated ones
# this helps understanding stack traces from the obfuscated application
# we need to keep our main class and the application entry point
-keep public class com.mycompany.Application {
public static void main(java.lang.String[]);
}
Если вы не укажете -dontshrink
, proguard удалит любой код, который не был сохранен или на который нет ссылки из любого сохраненного кода. Таким образом, в приведенной выше конфигурации любой код, на который не ссылается (косвенно) метод main, будет удален.
Proguard включает задачу Ant, которую можно использовать для интеграции с рабочим процессом NetBeans. Я бы посоветовал сначала поэкспериментировать вручную без Ant, так как это исключает один из осложняющих факторов. Создайте jar своего приложения с помощью NetBeans, а затем попытайтесь запутать описанную выше конфигурацию (уточните, если необходимо). Обязательно протестируйте запутанное приложение, так как неисчислимое количество вещей может пойти не так. Получив рабочую конфигурацию Proguard, попробуйте добавить задачу Ant в файл сборки, чтобы автоматизировать процесс обфускации в NetBeans.