Ответ 1
Я понял это.
-keepattributes Exceptions
Я использую ProGuard для обфускации моего кода. Мой проект состоит из нескольких модулей, каждый из которых запутывается независимо.
В одну библиотеку входит интерфейс;
public interface IFace {
public int methodA(boolean b) throws CustomException;
}
Другая библиотека обеспечивает импликацию
public class IFaceImpl implements IFace {
@Override
public int methodA(boolean b) throws CustomException {
return 0;
}
}
Сначала создается библиотека с интерфейсом, а вторая - с запутанной версией. К сожалению, компиляция завершается с ошибкой @Override
, так как интерфейс не содержит предложение throw.
У меня есть proguard, поддерживающий интерфейс и все его элементы, но я не могу понять, как сохранить предложение throws.
Я понял это.
-keepattributes Exceptions
Пример с Maven:
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.6</version>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<proguardVersion>4.10</proguardVersion>
<options>
<option>-keepattributes Exceptions</option>
<option>-keep public class some.package.SomeClass{*;}</option>
</options>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jce.jar</lib>
<lib>${java.home}/lib/jsse.jar</lib>
</libs>
</configuration>
</plugin>