Need to not generate debug info in Android as well now in order to satisfy new Progua...
[zxing.git] / android / build.xml
index c07d858..9051234 100644 (file)
@@ -130,8 +130,9 @@ limitations under the License.
 
   <!-- rules -->
 
-  <!-- Create the output directories if they don't exist yet. -->
-  <target name="dirs">
+  <!-- Create the output directories if they don't exist yet. All builds do a clean first
+  to prevent stale resources and to make ProGuard happy. -->
+  <target name="dirs" depends="clean">
     <echo>Creating output directories if needed...</echo>
     <mkdir dir="${resource-folder}" />
     <mkdir dir="${external-libs-folder}" />
@@ -172,7 +173,7 @@ limitations under the License.
 
   <!-- Compile this project's .java files into .class files. -->
   <target name="compile" depends="resource-src, aidl">
-    <javac encoding="ascii" target="1.5" debug="true" extdirs=""
+    <javac encoding="ascii" target="1.5" debug="false" extdirs=""
            destdir="${out-classes}"
            bootclasspathref="android.target.classpath">
       <src path="${source-folder}" />
@@ -187,10 +188,13 @@ limitations under the License.
 
     <unzip src="../core/core.jar" dest="${out-classes}" overwrite="true"/>
 
-    <!-- Optimize with ProGuard; can comment out this section to disable it -->
+    <antcall target="optimize"/>
+  </target>
+
+  <target name="optimize" unless="no-optimize">
     <mkdir dir="optimized"/>
     <property name="libraryjars.path" refid="android.target.classpath"/>
-    <java jar="${WTK-home}/bin/proguard.jar" fork="true" failonerror="true">
+    <java jar="${proguard-jar}" fork="true" failonerror="true">
       <jvmarg value="-Dmaximum.inlined.code.length=48"/>
       <arg value="-injars ${out-classes}"/>
       <arg value="-outjars optimized"/>
@@ -199,7 +203,8 @@ limitations under the License.
       <arg value="-keep class com.google.zxing.client.android.ViewfinderView { public * ; }"/>
       <arg value="-keep class com.google.zxing.client.android.book.SearchBookContents* { public * ; }"/>
       <arg value="-target 5"/>
-      <arg value="-optimizationpasses 7"/>
+      <arg value="-optimizationpasses 5"/>
+      <arg value="-optimizations !field/*,!class/merging/*"/> <!-- works around dex VerifyError -->
       <arg value="-dontshrink"/>
       <arg value="-dontobfuscate"/>
       <arg value="-dontskipnonpubliclibraryclasses"/>
@@ -208,7 +213,6 @@ limitations under the License.
     </java>
     <delete dir="${out-classes}"/>
     <move file="optimized" tofile="${out-classes}"/>
-    <!-- End optimization -->
   </target>
 
   <!-- Convert this project's .class files into .dex files. -->
@@ -266,6 +270,14 @@ limitations under the License.
       <jarfolder path="${external-libs-folder}" />
       <nativefolder path="${native-libs-folder}" />
     </apkbuilder>
+    <copy file="${out-folder}/BarcodeScanner-debug.apk" tofile="${out-folder}/temp.apk" overwrite="true"/>
+    <exec executable="${android-tools}/zipalign">
+      <arg value="-f"/>
+      <arg value="-v"/>
+      <arg value="4"/>
+      <arg value="${out-folder}/temp.apk"/>      
+      <arg value="${out-folder}/BarcodeScanner-debug.apk"/>
+    </exec>
   </target>
 
   <!-- Package the application without signing it.
@@ -282,6 +294,7 @@ limitations under the License.
       <nativefolder path="${native-libs-folder}" />
     </apkbuilder>
     <echo>All generated packages need to be signed with jarsigner before they are published.</echo>
+    <echo>Also run zipalign -f -v 4 BarcodeScanner.apk BarcodeScanner-aligned.apk after signing</echo>
   </target>
 
   <!-- Install the package on the default emulator -->