Use proguard to remove unused symbols from kotlin-reflect.jar
#KT-16268 Fixed
This commit is contained in:
@@ -617,13 +617,6 @@
|
|||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="compiler">
|
<target name="compiler">
|
||||||
<taskdef resource="proguard/ant/task.properties">
|
|
||||||
<classpath>
|
|
||||||
<pathelement path="${dependencies}/proguard.jar"/>
|
|
||||||
<pathelement path="${dependencies}/proguard-anttask.jar"/>
|
|
||||||
</classpath>
|
|
||||||
</taskdef>
|
|
||||||
|
|
||||||
<cleandir dir="${output}/classes/compiler"/>
|
<cleandir dir="${output}/classes/compiler"/>
|
||||||
|
|
||||||
<javac2 destdir="${output}/classes/compiler" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
|
<javac2 destdir="${output}/classes/compiler" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
|
||||||
@@ -645,17 +638,32 @@
|
|||||||
unless:true="${shrink}" />
|
unless:true="${shrink}" />
|
||||||
|
|
||||||
<sequential if:true="${shrink}">
|
<sequential if:true="${shrink}">
|
||||||
|
<shrink configuration="${basedir}/compiler/compiler.pro"/>
|
||||||
|
</sequential>
|
||||||
|
|
||||||
|
<pack-compiler-for-maven/>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
<macrodef name="shrink">
|
||||||
|
<attribute name="configuration"/>
|
||||||
|
|
||||||
|
<sequential>
|
||||||
|
<taskdef resource="proguard/ant/task.properties">
|
||||||
|
<classpath>
|
||||||
|
<pathelement path="${dependencies}/proguard.jar"/>
|
||||||
|
<pathelement path="${dependencies}/proguard-anttask.jar"/>
|
||||||
|
</classpath>
|
||||||
|
</taskdef>
|
||||||
|
|
||||||
<available property="rtjar" value="${java.home}/lib/rt.jar" file="${java.home}/lib/rt.jar"/>
|
<available property="rtjar" value="${java.home}/lib/rt.jar" file="${java.home}/lib/rt.jar"/>
|
||||||
<available property="rtjar" value="${java.home}/../Classes/classes.jar" file="${java.home}/../Classes/classes.jar"/>
|
<available property="rtjar" value="${java.home}/../Classes/classes.jar" file="${java.home}/../Classes/classes.jar"/>
|
||||||
|
|
||||||
<available property="jssejar" value="${java.home}/lib/jsse.jar" file="${java.home}/lib/jsse.jar"/>
|
<available property="jssejar" value="${java.home}/lib/jsse.jar" file="${java.home}/lib/jsse.jar"/>
|
||||||
<available property="jssejar" value="${java.home}/../Classes/jsse.jar" file="${java.home}/../Classes/jsse.jar"/>
|
<available property="jssejar" value="${java.home}/../Classes/jsse.jar" file="${java.home}/../Classes/jsse.jar"/>
|
||||||
|
|
||||||
<proguard configuration="${basedir}/compiler/compiler.pro"/>
|
<proguard configuration="@{configuration}"/>
|
||||||
</sequential>
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
<pack-compiler-for-maven/>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<macrodef name="pack-compiler-for-maven">
|
<macrodef name="pack-compiler-for-maven">
|
||||||
<sequential>
|
<sequential>
|
||||||
@@ -1224,11 +1232,10 @@
|
|||||||
</manifest>
|
</manifest>
|
||||||
</jar>
|
</jar>
|
||||||
|
|
||||||
<delete file="${output}/kotlin-reflect-jarjar.jar" failonerror="false"/>
|
|
||||||
|
|
||||||
<sequential if:true="${obfuscate.reflect}">
|
<sequential if:true="${obfuscate.reflect}">
|
||||||
<taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" classpath="dependencies/jarjar.jar"/>
|
<taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" classpath="dependencies/jarjar.jar"/>
|
||||||
<jarjar jarfile="${output}/kotlin-reflect-jarjar.jar" filesonly="true" filesetmanifest="merge">
|
<delete file="${output}/kotlin-reflect-after-jarjar.jar" failonerror="false"/>
|
||||||
|
<jarjar jarfile="${output}/kotlin-reflect-after-jarjar.jar" filesonly="true" filesetmanifest="merge">
|
||||||
<zipfileset src="${output}/kotlin-reflect-before-jarjar.jar"/>
|
<zipfileset src="${output}/kotlin-reflect-before-jarjar.jar"/>
|
||||||
<rule pattern="org.jetbrains.kotlin.**" result="kotlin.reflect.jvm.internal.impl.@1"/>
|
<rule pattern="org.jetbrains.kotlin.**" result="kotlin.reflect.jvm.internal.impl.@1"/>
|
||||||
<rule pattern="javax.inject.**" result="kotlin.reflect.jvm.internal.impl.javax.inject.@1"/>
|
<rule pattern="javax.inject.**" result="kotlin.reflect.jvm.internal.impl.javax.inject.@1"/>
|
||||||
@@ -1239,17 +1246,18 @@
|
|||||||
<compilerarg value="-script"/>
|
<compilerarg value="-script"/>
|
||||||
<compilerarg value="kotlin/Metadata"/> <!-- Annotation to strip -->
|
<compilerarg value="kotlin/Metadata"/> <!-- Annotation to strip -->
|
||||||
<compilerarg value="kotlin/reflect/jvm/internal/impl/.*"/> <!-- Classes to strip from -->
|
<compilerarg value="kotlin/reflect/jvm/internal/impl/.*"/> <!-- Classes to strip from -->
|
||||||
<compilerarg value="${output}/kotlin-reflect-jarjar.jar"/>
|
<compilerarg value="${output}/kotlin-reflect-after-jarjar.jar"/>
|
||||||
<compilerarg value="${kotlin-home}/lib/kotlin-reflect.jar"/>
|
<compilerarg value="${output}/kotlin-reflect-before-proguard.jar"/>
|
||||||
<classpath>
|
<classpath>
|
||||||
<pathelement location="${idea.sdk}/lib/asm-all.jar"/>
|
<pathelement location="${idea.sdk}/lib/asm-all.jar"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
</kotlinc>
|
</kotlinc>
|
||||||
|
|
||||||
|
<shrink configuration="${basedir}/core/reflection.jvm/reflection.pro"/>
|
||||||
</sequential>
|
</sequential>
|
||||||
|
|
||||||
<sequential unless:true="${obfuscate.reflect}">
|
<sequential unless:true="${obfuscate.reflect}">
|
||||||
<echo message="Obfuscation of kotlin-reflect is disabled"/>
|
<echo message="Obfuscation of kotlin-reflect is disabled"/>
|
||||||
<copy file="${output}/kotlin-reflect-before-jarjar.jar" tofile="${output}/kotlin-reflect-jarjar.jar" overwrite="true"/>
|
|
||||||
<copy file="${output}/kotlin-reflect-before-jarjar.jar" tofile="${kotlin-home}/lib/kotlin-reflect.jar" overwrite="true"/>
|
<copy file="${output}/kotlin-reflect-before-jarjar.jar" tofile="${kotlin-home}/lib/kotlin-reflect.jar" overwrite="true"/>
|
||||||
</sequential>
|
</sequential>
|
||||||
</target>
|
</target>
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
-injars '<output>/kotlin-reflect-before-proguard.jar'
|
||||||
|
-outjars '<kotlin-home>/lib/kotlin-reflect.jar'
|
||||||
|
|
||||||
|
-dontnote **
|
||||||
|
|
||||||
|
-libraryjars '<rtjar>'
|
||||||
|
-libraryjars '<kotlin-home>/lib/kotlin-runtime.jar'
|
||||||
|
|
||||||
|
-target 1.6
|
||||||
|
-dontoptimize
|
||||||
|
-dontobfuscate
|
||||||
|
# -dontshrink
|
||||||
|
|
||||||
|
-keep public class kotlin.reflect.* { *; }
|
||||||
|
-keep public class kotlin.reflect.jvm.* { *; }
|
||||||
|
-keep public class kotlin.reflect.full.* { *; }
|
||||||
|
|
||||||
|
-keepattributes SourceFile,LineNumberTable,InnerClasses,Signature,Deprecated,*Annotation*,EnclosingMethod
|
||||||
|
|
||||||
|
-keep class kotlin.reflect.jvm.internal.ReflectionFactoryImpl { public protected *; }
|
||||||
|
|
||||||
|
-keepclassmembers enum * {
|
||||||
|
public static **[] values();
|
||||||
|
public static ** valueOf(java.lang.String);
|
||||||
|
}
|
||||||
|
|
||||||
|
-keepclassmembers class * {
|
||||||
|
** toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
# For tests on HashPMap, see compiler/testData/codegen/box/hashPMap
|
||||||
|
-keepclassmembers class kotlin.reflect.jvm.internal.pcollections.HashPMap {
|
||||||
|
public int size();
|
||||||
|
public boolean containsKey(java.lang.Object);
|
||||||
|
public kotlin.reflect.jvm.internal.pcollections.HashPMap minus(java.lang.Object);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user