Use zipalign for debug, and reminder to use it after signing a release
[zxing.git] / android / build.xml
index 24f0f1e..1ee9a12 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}" />
@@ -201,6 +202,8 @@ limitations under the License.
       <arg value="-keep class com.google.zxing.client.android.*Activity"/>
       <arg value="-keep class com.google.zxing.client.android.ViewfinderView { public * ; }"/>
       <arg value="-keep class com.google.zxing.client.android.book.SearchBookContents* { public * ; }"/>
+      <!-- This works around some strange Android/ProGuard problem verifying MaskUtil -->
+      <arg value="-keep class com.google.zxing.qrcode.encoder.MaskUtil { public * ; }"/>
       <arg value="-target 5"/>
       <arg value="-optimizationpasses 4"/>
       <arg value="-dontshrink"/>
@@ -268,6 +271,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.
@@ -284,6 +295,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 -->