使用具有OSGi声明性服务的混淆器

时间:2011-12-01 15:32:46

标签: maven osgi obfuscation

我正在尝试使用Maven的ProGuard来混淆我的OSGi程序。我也使用SCR插件来处理声明性服务。

不幸的是,ProGuard对类中的所有名称进行了模糊处理,但并不容易理解与serviceComponents.xml文件的关系。

我应该能够编写一个程序,使用ProGuard混淆词典来解决这个问题,但是我想知道是否已经有了一些东西。

换句话说:

  • 如果您正在使用OSGi声明性服务,那么如何使用ProGuard和Maven进行模糊处理?
  • 另外,嗯,你怎么混淆?我在混淆器和构建系统方面很灵活......

谢谢!

2 个答案:

答案 0 :(得分:1)

我没有现成的解决方案。

我认为最好的方法是手动或自动解析服务组件声明,以提取所有相关的类和方法名称,并在这些类和方法上使用ProGuard keepnames选项。

答案 1 :(得分:0)

以下proguard配置可以帮助您

#Keep all annotations, exceptions.
-keepattributes *Annotation*,Exceptions
#Keep all interfaces. This is required to run OSGi services.
-keep public interface *
#Keep all Component classes
-keep @org.osgi.service.component.annotations.Component class *
#Kepp all Component classes member functions with OSGi specific annotations
-keepclassmembers @org.osgi.service.component.annotations.Component class * {
   #Keep all methods with annotatios Reference.
   @org.osgi.service.component.annotations.Reference *;
   #Keep all methods with annotatios Activate.
   @org.osgi.service.component.annotations.Activate *;
}