2010-10-24 17:52:14 +00:00
|
|
|
# proguard include file (http://proguard.sourceforge.net)
|
|
|
|
|
|
|
|
# This file is for use in combination with vm.pro when ProGuarding
|
|
|
|
# OpenJDK-based builds
|
|
|
|
|
|
|
|
# the following methods and fields are refered to by name in the VM:
|
|
|
|
|
|
|
|
-keepclassmembers class java.lang.Thread {
|
|
|
|
public void run();
|
|
|
|
}
|
|
|
|
|
2014-01-19 02:45:10 +00:00
|
|
|
-keepclassmembers class java.lang.ThreadGroup {
|
|
|
|
void threadTerminated(java.lang.Thread);
|
|
|
|
}
|
|
|
|
|
2010-10-24 17:52:14 +00:00
|
|
|
-keep class java.lang.System {
|
|
|
|
private static void initializeSystemClass();
|
2012-04-10 14:18:52 +00:00
|
|
|
public static void setProperties(java.util.Properties);
|
2010-10-24 17:52:14 +00:00
|
|
|
}
|
|
|
|
|
2012-12-31 18:56:35 +00:00
|
|
|
-keep class sun.misc.Launcher {
|
|
|
|
public static sun.misc.Launcher getLauncher();
|
|
|
|
}
|
|
|
|
|
2010-10-24 17:52:14 +00:00
|
|
|
-keep class java.lang.ClassLoader {
|
|
|
|
private static java.lang.ClassLoader scl;
|
|
|
|
private static boolean sclSet;
|
|
|
|
|
|
|
|
protected ClassLoader(java.lang.ClassLoader);
|
|
|
|
}
|
|
|
|
|
2010-12-06 00:40:18 +00:00
|
|
|
-keep class avian.SystemClassLoader {
|
|
|
|
protected java.net.URL findResource(java.lang.String);
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepnames class java.lang.ClassLoader {
|
|
|
|
public java.lang.Class loadClass(java.lang.String);
|
2010-12-09 04:39:20 +00:00
|
|
|
static void loadLibrary(java.lang.Class, java.lang.String, boolean);
|
2010-12-06 00:40:18 +00:00
|
|
|
private static java.net.URL getBootstrapResource(java.lang.String);
|
|
|
|
private static java.util.Enumeration getBootstrapResources(java.lang.String);
|
|
|
|
}
|
|
|
|
|
2010-10-24 17:52:14 +00:00
|
|
|
-keep class java.util.Properties {
|
|
|
|
public java.lang.Object setProperty(java.lang.String, java.lang.String);
|
2012-04-10 14:18:52 +00:00
|
|
|
public java.lang.String getProperty(java.lang.String);
|
|
|
|
}
|
|
|
|
|
|
|
|
-keep class java.util.Hashtable {
|
|
|
|
public java.lang.Object remove(java.lang.Object);
|
2010-10-24 17:52:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
-keep class avian.OpenJDK {
|
2012-10-16 14:33:35 +00:00
|
|
|
<methods>;
|
2010-10-24 17:52:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers public class java.security.PrivilegedAction {
|
|
|
|
public java.lang.Object run();
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers public class * implements java.security.PrivilegedAction {
|
|
|
|
public java.lang.Object run();
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers public class java.security.PrivilegedExceptionAction {
|
|
|
|
public java.lang.Object run();
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers public class * implements java.security.PrivilegedExceptionAction {
|
|
|
|
public java.lang.Object run();
|
|
|
|
}
|
|
|
|
|
|
|
|
-keep public class java.security.PrivilegedActionException {
|
|
|
|
public PrivilegedActionException(java.lang.Exception);
|
|
|
|
}
|
|
|
|
|
|
|
|
# these class names are used to disambiguate JNI method lookups:
|
|
|
|
|
2010-12-06 00:40:18 +00:00
|
|
|
-keepnames public class java.net.URL
|
|
|
|
-keepnames public class java.util.Enumeration
|
|
|
|
-keepnames public class java.security.ProtectionDomain
|
2010-10-24 17:52:14 +00:00
|
|
|
-keepnames public class java.security.PrivilegedAction
|
|
|
|
-keepnames public class java.security.PrivilegedExceptionAction
|
|
|
|
-keepnames public class java.security.AccessControlContext
|
|
|
|
|
|
|
|
# the following methods and fields are refered to by name in the OpenJDK
|
|
|
|
# native code:
|
|
|
|
|
|
|
|
-keep class java.util.Properties {
|
|
|
|
public java.lang.Object put(java.lang.Object, java.lang.Object);
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers class * {
|
|
|
|
public boolean equals(java.lang.Object);
|
|
|
|
public void wait();
|
|
|
|
public void notify();
|
|
|
|
public void notifyAll();
|
|
|
|
public java.lang.String toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers class java.lang.String {
|
|
|
|
public String(byte[]);
|
|
|
|
public String(byte[], java.lang.String);
|
|
|
|
public byte[] getBytes();
|
|
|
|
public byte[] getBytes(java.lang.String);
|
|
|
|
}
|
|
|
|
|
2010-12-09 04:39:20 +00:00
|
|
|
-keepclassmembers class java.lang.Boolean {
|
|
|
|
public boolean getBoolean(java.lang.String);
|
|
|
|
}
|
|
|
|
|
2010-12-06 00:40:18 +00:00
|
|
|
-keepclassmembers class java.util.zip.Inflater {
|
|
|
|
long strm;
|
|
|
|
boolean needDict;
|
|
|
|
boolean finished;
|
|
|
|
byte[] buf;
|
|
|
|
int off;
|
|
|
|
int len;
|
|
|
|
}
|
|
|
|
|
2010-10-24 17:52:14 +00:00
|
|
|
-keepclassmembers class java.io.FileDescriptor {
|
2011-04-14 22:39:25 +00:00
|
|
|
private int fd;
|
|
|
|
private long handle;
|
2010-10-24 17:52:14 +00:00
|
|
|
}
|
|
|
|
|
2012-06-14 01:33:11 +00:00
|
|
|
-keep class java.net.NetworkInterface {
|
|
|
|
<fields>;
|
|
|
|
}
|
2010-12-09 04:39:20 +00:00
|
|
|
-keep class java.net.InetAddress {
|
|
|
|
<fields>;
|
|
|
|
}
|
|
|
|
-keep class java.net.Inet4Address {
|
|
|
|
<fields>;
|
|
|
|
}
|
|
|
|
-keep class java.net.Inet4AddressImpl
|
|
|
|
-keep class java.net.Inet6Address {
|
|
|
|
<fields>;
|
|
|
|
}
|
|
|
|
-keep class java.net.Inet6AddressImpl
|
|
|
|
-keep class java.net.InetSocketAddress {
|
|
|
|
public InetSocketAddress(java.net.InetAddress, int);
|
|
|
|
}
|
|
|
|
-keep class java.net.ServerSocket
|
2013-02-27 13:54:50 +00:00
|
|
|
-keep class java.net.SocketTimeoutException
|
2010-12-09 04:39:20 +00:00
|
|
|
|
|
|
|
-keepclassmembers class java.net.PlainSocketImpl {
|
|
|
|
<fields>;
|
|
|
|
}
|
|
|
|
|
2013-02-05 10:36:09 +00:00
|
|
|
-keepclassmembers class java.net.TwoStacksPlainSocketImpl {
|
|
|
|
*** fd1;
|
|
|
|
*** lastfd;
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers class java.net.AbstractPlainSocketImpl {
|
|
|
|
*** timeout;
|
|
|
|
*** trafficClass;
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers class java.net.SocketImpl {
|
|
|
|
*** serverSocket;
|
|
|
|
*** fd;
|
|
|
|
*** address;
|
|
|
|
*** port;
|
|
|
|
*** localport;
|
|
|
|
}
|
|
|
|
|
2010-10-24 17:52:14 +00:00
|
|
|
-keepclassmembers class java.io.FileInputStream {
|
|
|
|
private java.io.FileDescriptor fd;
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers class java.io.FileOutputStream {
|
2011-04-14 22:39:25 +00:00
|
|
|
private java.io.FileDescriptor fd;
|
|
|
|
private boolean append;
|
2010-10-24 17:52:14 +00:00
|
|
|
}
|
|
|
|
|
2010-10-24 20:50:33 +00:00
|
|
|
# changed in native code via sun.misc.Unsafe (todo: handle other
|
|
|
|
# Atomic* classes)
|
2010-10-24 17:52:14 +00:00
|
|
|
-keepclassmembers class java.util.concurrent.atomic.AtomicInteger {
|
|
|
|
private int value;
|
|
|
|
}
|
|
|
|
|
2010-10-24 20:50:33 +00:00
|
|
|
# avoid inlining due to access check using a fixed offset into call stack:
|
|
|
|
-keep,allowshrinking,allowobfuscation class java.util.concurrent.atomic.AtomicReferenceFieldUpdater {
|
|
|
|
*** newUpdater(...);
|
|
|
|
}
|
|
|
|
|
|
|
|
# accessed reflectively via an AtomicReferenceFieldUpdater:
|
2010-10-24 17:52:14 +00:00
|
|
|
-keepclassmembers class java.io.BufferedInputStream {
|
|
|
|
protected byte[] buf;
|
|
|
|
}
|
|
|
|
|
2010-10-24 20:50:33 +00:00
|
|
|
-keep class java.lang.System {
|
|
|
|
public static java.io.InputStream in;
|
|
|
|
public static java.io.PrintStream out;
|
|
|
|
public static java.io.PrintStream err;
|
|
|
|
# avoid inlining due to access check using fixed offset into call stack:
|
|
|
|
static java.lang.Class getCallerClass();
|
2010-12-06 00:40:18 +00:00
|
|
|
# called from jni_util.c:
|
|
|
|
static java.lang.String getProperty(java.lang.String);
|
2010-10-24 20:50:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
# refered to by name from native code:
|
|
|
|
-keepnames public class java.io.InputStream
|
|
|
|
-keepnames public class java.io.PrintStream
|
2010-10-24 17:52:14 +00:00
|
|
|
|
2010-10-24 20:50:33 +00:00
|
|
|
# avoid inlining due to access check using fixed offset into call stack:
|
|
|
|
-keep,allowshrinking,allowobfuscation class java.lang.System {
|
|
|
|
static java.lang.Class getCallerClass();
|
|
|
|
}
|
2010-10-24 17:52:14 +00:00
|
|
|
|
2010-10-24 20:50:33 +00:00
|
|
|
-keep class java.io.UnixFileSystem {
|
|
|
|
public UnixFileSystem();
|
|
|
|
}
|
|
|
|
|
2011-04-14 22:39:25 +00:00
|
|
|
-keep class java.io.WinNTFileSystem {
|
|
|
|
public WinNTFileSystem();
|
|
|
|
}
|
|
|
|
|
2010-10-24 20:50:33 +00:00
|
|
|
-keep class java.io.File {
|
|
|
|
private java.lang.String path;
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers class java.lang.ClassLoader$NativeLibrary {
|
|
|
|
long handle;
|
|
|
|
private int jniVersion;
|
|
|
|
}
|
2010-12-06 00:40:18 +00:00
|
|
|
|
|
|
|
-keep class java.nio.charset.Charset {
|
|
|
|
# called from jni_util.c:
|
|
|
|
boolean isSupported(java.lang.String);
|
|
|
|
}
|
|
|
|
|
|
|
|
# Charsets are loaded via reflection. If you need others besides
|
|
|
|
# UTF-8, you'll need to add them (e.g. sun.nio.cs.ISO_8859_1).
|
|
|
|
-keep class sun.nio.cs.UTF_8
|
|
|
|
|
|
|
|
# loaded reflectively to handle embedded resources:
|
2012-10-06 21:33:24 +00:00
|
|
|
-keep class avian.avianvmresource.Handler
|
2010-12-06 00:40:18 +00:00
|
|
|
|
2014-05-19 01:23:21 +00:00
|
|
|
# loaded reflectively by sun.misc.Launcher:
|
|
|
|
-keep class avian.file.Handler
|
|
|
|
|
2010-12-06 00:40:18 +00:00
|
|
|
# refered to symbolically in MethodAccessorGenerator:
|
|
|
|
-keep class sun.reflect.MethodAccessorImpl {
|
|
|
|
<methods>;
|
|
|
|
}
|
|
|
|
-keep class sun.reflect.ConstructorAccessorImpl {
|
|
|
|
<methods>;
|
|
|
|
}
|
|
|
|
-keep class sun.reflect.SerializationConstructorAccessorImpl {
|
|
|
|
<methods>;
|
|
|
|
}
|
|
|
|
|
2010-12-06 01:01:38 +00:00
|
|
|
# referred to by name in LocaleData to load resources:
|
2010-12-06 00:40:18 +00:00
|
|
|
-keep class sun.util.resources.CalendarData
|
2010-12-09 04:39:20 +00:00
|
|
|
-keep class sun.util.resources.TimeZoneNames
|
2010-12-06 00:40:18 +00:00
|
|
|
-keep class sun.text.resources.FormatData
|
|
|
|
|
2012-05-22 23:45:13 +00:00
|
|
|
# loaded via reflection from DefaultFileSystemProvider:
|
|
|
|
-keep class sun.nio.fs.LinuxFileSystemProvider
|
|
|
|
-keep class sun.nio.fs.BsdFileSystemProvider
|
|
|
|
|
|
|
|
# loaded via JNI in UnixNativeDispatcher.c:
|
|
|
|
-keep class sun.nio.fs.UnixFileAttributes {
|
|
|
|
<fields>;
|
|
|
|
}
|
|
|
|
-keep class sun.nio.fs.UnixFileStoreAttributes {
|
|
|
|
<fields>;
|
|
|
|
}
|
|
|
|
-keep class sun.nio.fs.UnixMountEntry {
|
|
|
|
<fields>;
|
|
|
|
}
|
|
|
|
|
|
|
|
-keep class sun.nio.fs.UnixException {
|
|
|
|
UnixException(int);
|
|
|
|
}
|
2012-10-06 21:33:24 +00:00
|
|
|
|
|
|
|
-keep class sun.net.www.protocol.jar.Handler
|
2012-12-21 13:18:41 +00:00
|
|
|
|
|
|
|
# These concurrent classes refer to certain members reflectively in their static initializers
|
|
|
|
-keepclassmembers class java.util.concurrent.ConcurrentHashMap$HashEntry {
|
|
|
|
*** next;
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers class java.util.concurrent.CopyOnWriteArrayList {
|
|
|
|
*** lock;
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers class java.util.concurrent.CountDownLatch {
|
|
|
|
*** allocationSpinLock;
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers class java.util.concurrent.PriorityBlockingQueue {
|
|
|
|
*** allocationSpinLock;
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers class java.util.concurrent.SynchronousQueue$TransferStack {
|
|
|
|
*** head;
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers class java.util.concurrent.ConcurrentLinkedQueue {
|
|
|
|
*** head;
|
|
|
|
*** tail;
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers class java.util.concurrent.ConcurrentLinkedQueue$Node {
|
|
|
|
*** item;
|
|
|
|
*** next;
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers class java.util.concurrent.SynchronousQueue$TransferStack$SNode {
|
|
|
|
*** match;
|
|
|
|
*** next;
|
2012-12-31 18:56:35 +00:00
|
|
|
}
|
2017-02-01 14:52:10 +00:00
|
|
|
|
|
|
|
# These classes are accessed via bytecode generated on the fly.
|
|
|
|
-keepclassmembers class java.lang.reflect.Proxy {
|
|
|
|
<methods>;
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers class java.lang.reflect.InvocationHandler {
|
|
|
|
<methods>;
|
|
|
|
}
|
|
|
|
|
|
|
|
# Don't strip special enum members.
|
|
|
|
-keepclassmembers,allowoptimization enum * {
|
|
|
|
public static **[] values();
|
|
|
|
public static ** valueOf(java.lang.String);
|
|
|
|
}
|
|
|
|
|
|
|
|
-keepclassmembers class java.lang.reflect.Executable {
|
|
|
|
<methods>;
|
|
|
|
}
|
|
|
|
|
2017-07-10 16:01:56 +00:00
|
|
|
# Needed to create temporary file paths, amongst other things.
|
|
|
|
-keep class sun.security.provider.NativePRNG
|
|
|
|
-keep class sun.security.provider.SHA
|
|
|
|
|
|
|
|
# Character set codecs
|
|
|
|
-keep class sun.nio.cs.ISO_8859_1
|
|
|
|
-keep class sun.nio.cs.UTF_8
|
|
|
|
-keep class sun.nio.cs.UTF_16
|
|
|
|
-keep class sun.nio.cs.UTF_16BE
|
|
|
|
-keep class sun.nio.cs.UTF_16LE
|
|
|
|
-keep class sun.nio.cs.US_ASCII
|
|
|
|
|
|
|
|
# Accessed from native code
|
|
|
|
-keep class java.util.zip.Deflater {
|
|
|
|
<fields>;
|
|
|
|
}
|