Added a new build-optimized target to core for applications which want the library...
authordswitkin <dswitkin@59b500cc-1b3d-0410-9834-0bbf25fbcc57>
Sun, 20 Dec 2009 20:08:32 +0000 (20:08 +0000)
committerdswitkin <dswitkin@59b500cc-1b3d-0410-9834-0bbf25fbcc57>
Sun, 20 Dec 2009 20:08:32 +0000 (20:08 +0000)
git-svn-id: http://zxing.googlecode.com/svn/trunk@1162 59b500cc-1b3d-0410-9834-0bbf25fbcc57

core/build.xml

index a042e78..f02fcb6 100644 (file)
@@ -42,7 +42,7 @@
         <attribute name="Bundle-Name" value="ZXing"/>
         <attribute name="Bundle-Vendor" value="ZXing Project"/>
         <attribute name="Bundle-SymbolicName" value="ZXing"/>
-        <attribute name="Bundle-Version" value="${version}"/>        
+        <attribute name="Bundle-Version" value="${version}"/>
         <attribute name="Export-Package" value="com.google.zxing,com.google.zxing.common,com.google.zxing.client.result"/>
         <attribute name="Bug-Bundle-Type" value="Application"/>
       </manifest>
     </antcall>
   </target>
 
+  <!-- This target builds an optimized core.jar using ProGuard. It is not intended for our Android
+  client - use build-no-debug intead, then build the client which runs ProGuard on everything. -->
+  <target name="build-optimized" depends="clean">
+    <antcall target="compile">
+      <param name="generate-debug" value="false"/>
+    </antcall>
+
+    <delete file="core.jar"/>
+    <mkdir dir="optimized"/>
+    <java jar="${WTK-home}/bin/proguard.jar" fork="true" failonerror="true">
+      <jvmarg value="-Dmaximum.inlined.code.length=48"/>
+      <arg value="-injars build"/>
+      <arg value="-outjars optimized"/>
+      <!-- Needed for Mac OS. -->
+      <!--<arg value="-libraryjars ${java.home}/../Classes/classes.jar"/>-->
+      <!-- Needed for other Android apps besides Barcode Scanner. -->
+      <!--<arg value="-libraryjars ${android-home}/platforms/android-1.6/android.jar"/>-->
+      <arg value="-keep class com.google.zxing.* {public protected *;}"/>
+      <arg value="-keep class com.google.zxing.common.*Binarizer {public protected *;}"/>
+      <!-- Remove this line is you only use the Result base object and want the smallest jar. -->
+      <arg value="-keep class com.google.zxing.client.result.* {public protected *;}"/>
+      <!-- Contains a useful UPC-E to UPC-A method. -->
+      <arg value="-keep class com.google.zxing.oned.UPCEReader {public *;}"/>
+      <arg value="-target 1.2"/>
+      <arg value="-optimizationpasses 4"/>
+      <arg value="-dontobfuscate"/>
+      <arg value="-dontskipnonpubliclibraryclasses"/>
+      <arg value="-verbose"/>
+    </java>
+    <jar jarfile="core.jar" basedir="optimized"/>
+  </target>
+
   <target name="build-test" depends="init,build">
     <fail message="Please build 'javase' first">
       <condition>
       <batchtest>
         <fileset dir="test/src">
           <include name="**/${subdir}/*BlackBox*TestCase.java"/>
-          <exclude name="**/Abstract*.java"/>            
+          <exclude name="**/Abstract*.java"/>
         </fileset>
       </batchtest>
     </junit>
       <jvmarg value="-Xint"/> <!-- works around weird JIT bug in Java 6 -->
       <batchtest>
         <fileset dir="test/src">
-          <include name="**/*TestCase.java"/>          
+          <include name="**/*TestCase.java"/>
           <exclude name="**/*BlackBox*TestCase.java"/>
           <exclude name="**/Abstract*.java"/>
         </fileset>
   <target name="clean">
     <delete dir="build"/>
     <delete dir="build-test"/>
+    <delete dir="optimized"/>
     <delete file="core.jar"/>
     <delete file="ZXingReader.*"/>
     <delete file="proguard-dump.txt"/>