サードパーティのjarがいくつか入った実行可能なjarがあります。それらのライブラリがすでにメインのjarファイルにパックされている場合でも、Proguardの-libraryjarオプションを使用してそれらのライブラリを指定する必要がありますか?
現時点では、私はこれらのエラーです:
Warning: there were 171 unresolved references to classes or interfaces.
Warning: there were 394 instances of library classes depending on program classes.
Warning: there were 1 unresolved references to program class members.
-libraryjarオプションを指定してjarを指定すると、Proguardは重複するクラスについて多くの警告を出します。
私のアリのビルド:
<target name="jar" depends="compile">
<delete file="${destfile}" />
<jar destfile="${destfile}" filesetmanifest="mergewithoutmain" duplicate="preserve">
<manifest>
<attribute name="Main-Class" value="main.Main"/>
<attribute name="Class-Path" value="${classpath}"/>
</manifest>
<fileset dir="${target}" includes="**/*.class" />
<zipfileset excludes="META-INF/*.SF" src="lib1.jar" />
<zipfileset excludes="META-INF/*.SF" src="lib2.jar" />
<zipfileset excludes="META-INF/*.SF" src="lib3.jar" />
</jar>
</target>
<target name="dist" depends="jar">
<taskdef resource="proguard/ant/task.properties" classpath="${proguard}" />
<proguard>
-injars ${destfile}
-outjars ${destfileobfuscated}
-libraryjars C:/Java/jdk1.6.0_25/jre/lib/rt.jar;
C:/Java/jdk1.6.0_25/jre/lib/jsse.jar;
C:/Java/jdk1.6.0_25/jre/lib/jce.jar;
lib1.jar;
lib2.jar;
lib3.jar
-optimizationpasses 5
-overloadaggressively
-repackageclasses ''
-allowaccessmodification
-dontskipnonpubliclibraryclassmembers
-keepclasseswithmembers public class * {
public static void main(java.lang.String[]);
}
</proguard>
<move file="${destfileobfuscated}" tofile="${destfile}" />
</target>