在云计算领域,ProGuard是一款非常有效的代码优化和混淆工具。要使用ProGuard混淆OSGi包,请按照以下步骤操作:
-injars bin/classes
-outjars bin/classes_processed.jar
-libraryjars /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar
-dontwarn
-dontnote
-optimizationpasses 5
-allowaccessmodification
-mergeinterfaces
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/,!class/merging/
-keepattributes Annotation
-keep public class * extends org.osgi.framework.BundleActivator {
public void start(org.osgi.framework.BundleContext);
public void stop(org.osgi.framework.BundleContext);
}
-keep public class * extends org.osgi.framework.ServiceFactory {
public java.lang.Object getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration);
public void ungetService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration, java.lang.Object);
}
-keep public class * implements org.osgi.framework.ServiceFactory {
public java.lang.Object getService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration);
public void ungetService(org.osgi.framework.Bundle, org.osgi.framework.ServiceRegistration, java.lang.Object);
}
-keep public class * implements org.osgi.framework.BundleActivator {
public void start(org.osgi.framework.BundleContext);
public void stop(org.osgi.framework.BundleContext);
}
-keep public class * implements org.osgi.framework.Constants {
public static final java.lang.String BUNDLE_ACTIVATOR;
public static final java.lang.String BUNDLE_CLASSPATH;
public static final java.lang.String BUNDLE_MANIFESTVERSION;
public static final java.lang.String BUNDLE_NAME;
public static final java.lang.String BUNDLE_NATIVECODE;
public static final java.lang.String BUNDLE_REQUIREDEXECUTIONENVIRONMENT;
public static final java.lang.String BUNDLE_SYMBOLICNAME;
public static final java.lang.String BUNDLE_UPDATELOCATION;
public static final java.lang.String BUNDLE_VENDOR;
public static final java.lang.String BUNDLE_VERSION;
public static final java.lang.String BUNDLE_DOCURL;
public static final java.lang.String BUNDLE_CONTACTADDRESS;
public static final java.lang.String BUNDLE_COPYRIGHT;
public static final java.lang.String BUNDLE_DESCRIPTION;
public static final java.lang.String BUNDLE_DISPLAYNAME;
public static final java.lang.String BUNDLE_ICON;
public static final java.lang.String BUNDLE_LICENSE;
public static final java.lang.String BUNDLE_CATEGORY;
public static final java.lang.String BUNDLE_BLUEPRINT;
}
-keep public class * implements org.osgi.framework.ServiceReference {
public java.lang.String getProperty(java.lang.String);
public java.lang.Object getProperty(java.lang.String);
public java.lang.String[] getPropertyKeys();
public org.osgi.framework.Bundle getBundle();
public java.util.Collection getUsingBundles();
public boolean isAssignableTo(org.osgi.framework.Bundle, java.lang.String);
public java.lang.Object getProperty(org.osgi.framework.Bundle, java.lang.String);
public java.lang.String getBundleLocation();
public java.lang.String getServiceId();
}
-keep public class * implements org.osgi.framework.ServiceRegistration {
public void setProperties(java.util.Dictionary);
public void unregister();
public org.osgi.framework.ServiceReference getReference();
}
-keep public class * implements org.osgi.framework.BundleContext {
public org.osgi.framework.Bundle getBundle();
public org.osgi.framework.Bundle installBundle(java.lang.String);
public org.osgi.framework.Bundle installBundle(java.lang.String, java.io.InputStream);
public org.osgi.framework.Bundle getBundle(java.lang.String);
public org.osgi.framework.Bundle[] getBundles();
public org.osgi.framework.ServiceRegistration registerService(java.lang.String[], java.lang.Object, java.util.Dictionary);
public org.osgi.framework.ServiceRegistration registerService(java.lang.String, java.lang.Object, java.util.Dictionary);
public org.osgi.framework.ServiceReference[] getServiceReferences(java.lang.String, java.lang.String);
public org.osgi.framework.ServiceReference[] getAllServiceReferences(java.lang.String, java.lang.String);
public java.lang.Object getService(org.osgi.framework.ServiceReference);
public boolean ungetService(org.osgi.framework.ServiceReference);
public org.osgi.framework.Filter createFilter(java.lang.String);
public org.osgi.framework.ServiceListener[] getServiceListeners(java.lang.String);
public org.osgi.framework.Bundle getBundle(long);
}
-keep public class * implements org.osgi.framework.ServiceListener {
public void serviceChanged(org.osgi.framework.ServiceEvent);
}
-keep public class * implements org.osgi
领取专属 10元无门槛券
手把手带您无忧上云