2013-03-25 4 views
1

Я делаю обфускацию своего кода Java перед доставкой (в настоящее время используется ProGuard).Java obfuscation: удалить сообщения об исключениях

Когда я «декомпилирую» обфускацию байтового кода, очевидно, что все строки не запутываются. Это также относится к сообщениям в исключениях. Эти сообщения об исключениях дают читателю много информации для понимания кода. Как:

if(a == null){ 
    throw new IllegalArgumentException("SuperSecretObject cannot be null"); 
} 

Можно ли, используя ProGuard или другой инструмент для компиляции при удалении всех строк сообщений исключения?

Else, вы можете рекомендовать другие методы, чтобы скрыть строки, которые не являются функционально необходимыми?

+0

Удаление сообщений об исключениях с изменением поведения кода. – gontard

+2

Вы можете перемещать сообщения об исключениях в файл вне кода, но даже тогда всегда можно ссылаться на эти сообщения. –

+0

@Sudhanshu хорошая идея: я мог бы использовать свойство, которое возвращает «», когда ключ не найден. Свойства будут заполняться только при тестовой установке, в которой должны быть сообщения об исключениях. – Philipp

ответ

1

Например, вы могли бы использовать

throw new IllegalArgumentException(SuperSecretObject.class.getName() + " cannot be null"); 

Тогда обфускатор может также заменить имя класса с запутанными один.