método Ofuscar con cláusula throws
-
12-09-2019 - |
Pregunta
Estoy usando ProGuard para ofuscar el código. Mi proyecto se compone de unos pocos módulos, cada uno de forma independiente ofuscado.
Una biblioteca incluye una interfaz;
public interface IFace {
public int methodA(boolean b) throws CustomException;
}
Otra biblioteca proporciona un implmentation
public class IFaceImpl implements IFace {
@Override
public int methodA(boolean b) throws CustomException {
return 0;
}
}
La biblioteca con la interfaz se construye primero, y el segundo está construido en la versión ofuscado. Por desgracia, el compilador falla en el @Override
como la interfaz no tiene la cláusula throws.
Tengo Proguard manteniendo la interfaz y todos sus miembros, pero no puedo encontrar la manera de mantener la cláusula throws.
Solución
lo he descubierto.
-keepattributes Exceptions
Otros consejos
Ejemplo con 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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow