Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Recreate build files for android, androidtest, for latest SDK

git-svn-id: http://zxing.googlecode.com/svn/trunk@2008 59b500cc-1b3d-0410-9834-0bbf25fbcc57
  • Loading branch information...
commit 8f3f6d1254f513568933f6d1f0b2debbb2c98592 1 parent bceea7b
srowen authored
View
2  android-integration/build.xml
@@ -35,7 +35,7 @@
deprecation="true"
includeantruntime="false">
<classpath>
- <pathelement location="${android-home}/platforms/android-7/android.jar"/>
+ <pathelement location="${android-home}/platforms/android-10/android.jar"/>
</classpath>
</javac>
<jar jarfile="android-integration.jar" basedir="build"/>
View
19 android/ant.properties
@@ -0,0 +1,19 @@
+# This file is used to override default values used by the Ant build system.
+#
+# This file must be checked in Version Control Systems, as it is
+# integral to the build system of your project.
+
+# This file is only used by the Ant script.
+
+# You can use this to override default values such as
+# 'source.dir' for the location of your java source folder and
+# 'out.dir' for the location of your output folder.
+
+# You can also use it define how the release builds are signed by declaring
+# the following properties:
+# 'key.store' for the location of your keystore and
+# 'key.alias' for the name of the key to use.
+# The password will be asked during the build when you use the 'release' target.
+
+application-package=com.google.zxing.client.android
+external-libs-folder=libs
View
377 android/build.xml
@@ -14,328 +14,87 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
-<project name="BarcodeScanner" default="debug">
+<project name="BarcodeScanner" default="help">
- <!-- Normally the Android build system looks for a local.properties. Since that's only used
- to find the SDK location, I've removed it and pointed us at the global ZXing build.properties. -->
- <property file="../build.properties"/>
- <!-- Parts of the Android build system insist on the name 'sdk-location', so alias it. -->
- <property name="sdk.dir" value="${android-home}"/>
+ <!-- The local.properties file is created and updated by the 'android' tool.
+ It contains the path to the SDK. It should *NOT* be checked into
+ Version Control Systems. -->
+ <loadproperties srcFile="local.properties" />
- <!-- The build.properties file can be created by you and is never touched
- by the 'android' tool. This is the place to change some of the default property values
- used by the Ant rules.
- Here are some properties you may want to change/update:
+ <!-- The ant.properties file can be created by you. It is only edited by the
+ 'android' tool to add properties to it.
+ This is the place to change some Ant specific build properties.
+ Here are some properties you may want to change/update:
- application-package
- the name of your application package as defined in the manifest. Used by the
- 'uninstall' rule.
- source-folder
- the name of the source folder. Default is 'src'.
- out-folder
- the name of the output folder. Default is 'bin'.
+ source.dir
+ The name of the source directory. Default is 'src'.
+ out.dir
+ The name of the output directory. Default is 'bin'.
- Properties related to the SDK location or the project target should be updated
- using the 'android' tool with the 'update' action.
+ For other overridable properties, look at the beginning of the rules
+ files in the SDK, at tools/ant/build.xml
- This file is an integral part of the build system for your application and
- should be checked in in Version Control Systems.
+ Properties related to the SDK location or the project target should
+ be updated using the 'android' tool with the 'update' action.
- -->
- <property file="build.properties"/>
+ This file is an integral part of the build system for your
+ application and should be checked into Version Control Systems.
- <!-- The default.properties file is created and updated by the 'android' tool, as well as ADT.
- This file is an integral part of the build system for your application and
- should be checked in in Version Control Systems. -->
- <property file="default.properties"/>
+ -->
+ <property file="ant.properties" />
- <!-- Custom Android task to deal with the project target, and import the proper rules.
- This requires ant 1.6.0 or above. -->
- <path id="android.antlibs">
- <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
- <pathelement path="${sdk.dir}/tools/lib/sdklib.jar" />
- <pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" />
- <pathelement path="${sdk.dir}/tools/lib/apkbuilder.jar" />
- <pathelement path="${sdk.dir}/tools/lib/jarutils.jar" />
- </path>
+ <!-- The project.properties file is created and updated by the 'android'
+ tool, as well as ADT.
- <taskdef name="setup"
- classname="com.android.ant.SetupTask"
- classpathref="android.antlibs"/>
+ This contains project specific properties such as project target, and library
+ dependencies. Lower level build properties are stored in ant.properties
+ (or in .classpath for Eclipse projects).
- <!-- Execute the Android Setup task that will setup some properties specific to the target,
- and import the rules files.
- To customize the rules, copy/paste them below the task, and disable import by setting
- the import attribute to false:
- <setup import="false" />
+ This file is an integral part of the build system for your
+ application and should be checked into Version Control Systems. -->
+ <loadproperties srcFile="project.properties" />
- This will ensure that the properties are setup correctly but that your customized
- targets are used.
- -->
- <setup import="false" />
+ <!-- quick check on sdk.dir -->
+ <fail
+ message="sdk.dir is missing. Make sure to generate local.properties using 'android update project'"
+ unless="sdk.dir"
+ />
- <!-- Custom tasks -->
- <taskdef name="aaptexec"
- classname="com.android.ant.AaptExecLoopTask"
- classpathref="android.antlibs"/>
- <taskdef name="apkbuilder"
- classname="com.android.ant.ApkBuilderTask"
- classpathref="android.antlibs"/>
-
- <!-- Properties -->
-
- <property name="android-tools" value="${sdk.dir}/tools" />
- <property name="platform-tools" value="${sdk.dir}/platform-tools" />
-
- <!-- Input directories -->
- <property name="source-folder" value="src" />
- <property name="gen-folder" value="gen" />
- <property name="resource-folder" value="res" />
- <property name="asset-folder" value="assets" />
- <property name="source-location" value="${basedir}/${source-folder}" />
-
- <!-- folder for the 3rd party java libraries -->
- <!--<property name="external-libs-folder" value="../core" />-->
-
- <!-- Output directories -->
- <property name="gen-folder" value="gen" />
- <property name="out-folder" value="bin" />
- <property name="out-classes" value="${out-folder}/classes" />
- <property name="out-classes-location" value="${basedir}/${out-classes}"/>
- <!-- out folders for a parent project if this project is an instrumentation project -->
- <property name="main-out-folder" value="../${out-folder}" />
- <property name="main-out-classes" value="${main-out-folder}/classes"/>
-
- <!-- Intermediate files -->
- <property name="dex-file" value="classes.dex" />
- <property name="intermediate-dex" value="${out-folder}/${dex-file}" />
- <!-- dx does not properly support incorrect / or \ based on the platform
- and Ant cannot convert them because the parameter is not a valid path.
- Because of this we have to compute different paths depending on the platform. -->
- <condition property="intermediate-dex-location"
- value="${basedir}\${intermediate-dex}"
- else="${basedir}/${intermediate-dex}" >
- <os family="windows"/>
- </condition>
-
- <!-- The final package file to generate -->
- <property name="out-debug-package" value="${out-folder}/${ant.project.name}-debug.apk"/>
-
- <!-- Tools -->
- <condition property="exe" value=".exe" else=""><os family="windows"/></condition>
- <property name="adb" value="${platform-tools}/adb${exe}"/>
-
- <!-- rules -->
-
- <!-- 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}" />
- <mkdir dir="${gen-folder}" />
- <mkdir dir="${out-folder}" />
- <mkdir dir="${out-classes}" />
- </target>
-
- <!-- Generate the R.java file for this project's resources. -->
- <target name="resource-src" depends="dirs">
- <echo>Generating R.java / Manifest.java from the resources...</echo>
- <exec executable="${aapt}" failonerror="true">
- <arg value="package" />
- <arg value="-m" />
- <arg value="-J" />
- <arg path="${gen-folder}" />
- <arg value="-M" />
- <arg path="AndroidManifest.xml" />
- <arg value="-S" />
- <arg path="${resource-folder}" />
- <arg value="-I" />
- <arg path="${android.jar}" />
- </exec>
- </target>
-
- <!-- Generate java classes from .aidl files. -->
- <target name="aidl" depends="dirs">
- <echo>Compiling aidl files into Java classes...</echo>
- <apply executable="${aidl}" failonerror="true">
- <arg value="-p${android-aidl}" />
- <arg value="-I${source-folder}" />
- <arg value="-o${gen-folder}" />
- <fileset dir="${source-folder}">
- <include name="**/*.aidl"/>
- </fileset>
- </apply>
- </target>
-
- <!-- Compile this project's .java files into .class files. -->
- <target name="compile" depends="resource-src, aidl">
- <javac encoding="ascii" target="1.5" debug="false" extdirs=""
- destdir="${out-classes}"
- bootclasspathref="android.target.classpath"
- includeantruntime="false">
- <src path="${source-folder}" />
- <src path="${gen-folder}" />
- <classpath>
- <fileset dir="${external-libs-folder}" includes="*.jar"/>
- <!-- yeah, want to not use this mechanism above -->
- <pathelement path="../core/core.jar"/>
- <pathelement path="${main-out-classes}"/>
- </classpath>
- </javac>
-
- <unzip src="../core/core.jar" dest="${out-classes}" overwrite="true"/>
-
- <antcall target="optimize"/>
- </target>
-
- <target name="optimize" unless="no-optimize">
- <mkdir dir="optimized"/>
- <property name="libraryjars.path" refid="android.target.classpath"/>
- <java jar="${proguard-jar}" fork="true" failonerror="true">
- <jvmarg value="-Dmaximum.inlined.code.length=48"/>
- <arg value="-injars ${out-classes}"/>
- <arg value="-outjars optimized"/>
- <arg value="-libraryjars ${libraryjars.path}"/>
- <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 * ; }"/>
- <arg value="-target 5"/>
- <arg value="-optimizationpasses 5"/>
- <arg value="-optimizations !field/*,!class/merging/*"/> <!-- works around dex VerifyError -->
- <arg value="-dontshrink"/>
- <arg value="-dontobfuscate"/>
- <arg value="-dontskipnonpubliclibraryclasses"/>
- <arg value="-verbose"/>
- <arg value="-dump proguard-dump.txt"/>
- </java>
- <delete dir="${out-classes}"/>
- <move file="optimized" tofile="${out-classes}"/>
- </target>
-
- <!-- Convert this project's .class files into .dex files. -->
- <target name="dex" depends="compile">
- <echo>Converting compiled files and external libraries into ${out-folder}/${dex-file}...</echo>
- <apply executable="${dx}" failonerror="true" parallel="true">
- <arg value="-JXmx256M"/>
- <arg value="--dex" />
- <arg value="--output=${intermediate-dex-location}" />
- <arg path="${out-classes-location}" />
- <fileset dir="${external-libs-folder}" includes="*.jar"/>
- </apply>
- </target>
-
- <!-- Put the project's resources into the output package file
- This actually can create multiple resource package in case
- Some custom apk with specific configuration have been
- declared in default.properties.
- -->
- <target name="package-resources">
- <echo>Packaging resources</echo>
- <aaptexec executable="${aapt}"
- command="package"
- manifest="AndroidManifest.xml"
- assets="${asset-folder}"
- androidjar="${android.jar}"
- apkfolder="${out-folder}"
- resourcefilename="${ant.project.name}">
- <res path="${resource-folder}"/>
- </aaptexec>
- </target>
-
- <!--
- Getting an error like this?
-
- [apply] UNEXPECTED TOP-LEVEL EXCEPTION:
- [apply] com.android.dx.cf.code.SimException: local variable type
- mismatch: attempt to set or access a value of type int using a local
- variable of type com.google.zxing.qrcode.decoder.Version. This is
- symptomatic of .class transformation tools that ignore local variable
- information.
-
- Build core/ with the 'build-no-debug' target. It's a long story.
- -->
-
- <!-- Package the application and sign it with a debug key.
- This is the default target when building. It is used for debug. -->
- <target name="debug" depends="dex, package-resources">
- <apkbuilder
- outfolder="${out-folder}"
- resourcefile="BarcodeScanner"
- apkfilepath="${out-folder}/BarcodeScanner-debug.apk"
- debugpackaging="true"
- debugsigning="true"
- verbose="false">
- <dex path="${intermediate-dex-location}" />
- <sourcefolder path="${source-folder}" />
- <jarfolder path="${external-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.
- This allows for the application to be signed later with an official publishing key. -->
- <target name="release" depends="dex, package-resources">
- <apkbuilder
- outfolder="${out-folder}"
- resourcefile="BarcodeScanner"
- apkfilepath="${out-folder}/BarcodeScanner-unsigned.apk"
- debugpackaging="false"
- debugsigning="false"
- verbose="false">
- <dex path="${intermediate-dex-location}" />
- <sourcefolder path="${source-folder}" />
- <jarfolder path="${external-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 (or reinstall) the package on the default emulator -->
- <target name="install" depends="debug">
- <echo>Installing ${out-debug-package} onto default emulator...</echo>
- <exec executable="${adb}" failonerror="true">
- <arg value="install" />
- <arg value="-r" />
- <arg path="${out-debug-package}" />
- </exec>
- </target>
-
- <!-- Uinstall the package from the default emulator -->
- <target name="uninstall">
- <echo>Uninstalling ${application-package} from the default emulator...</echo>
- <exec executable="${adb}" failonerror="true">
- <arg value="uninstall" />
- <arg value="${application-package}" />
- </exec>
- </target>
+<!-- extension targets. Uncomment the ones where you want to do custom work
+ in between standard targets -->
+<!--
+ <target name="-pre-build">
+ </target>
+ <target name="-pre-compile">
+ </target>
+
+ /* This is typically used for code obfuscation.
+ Compiled code location: ${out.classes.absolute.dir}
+ If this is not done in place, override ${out.dex.input.absolute.dir} */
+ <target name="-post-compile">
+ </target>
+-->
- <target name="help">
- <echo>Android Ant Build. Available targets:</echo>
- <echo> help: Displays this help.</echo>
- <echo> debug: Builds the application and sign it with a debug key.</echo>
- <echo> release: Builds the application. The generated apk file must be</echo>
- <echo> signed before it is published.</echo>
- <echo> install: Installs the debug package onto a running emulator or</echo>
- <echo> device. This can only be used if the application has </echo>
- <echo> not yet been installed.</echo>
- <echo> reinstall: Installs the debug package on a running emulator or</echo>
- <echo> device that already has the application.</echo>
- <echo> The signatures must match.</echo>
- <echo> uninstall: uninstall the application from a running emulator or</echo>
- <echo> device.</echo>
- </target>
+ <!-- Import the actual build file.
+
+ To customize existing targets, there are two options:
+ - Customize only one target:
+ - copy/paste the target into this file, *before* the
+ <import> task.
+ - customize it to your needs.
+ - Customize the whole content of build.xml
+ - copy/paste the content of the rules files (minus the top node)
+ into this file, replacing the <import> task.
+ - customize to your needs.
+
+ ***********************
+ ****** IMPORTANT ******
+ ***********************
+ In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
+ in order to avoid having your file be overridden by tools such as "android update project"
+ -->
+ <!-- version-tag: 1 -->
+ <import file="${sdk.dir}/tools/ant/build.xml" />
- <target name="clean">
- <delete dir="${out-folder}"/>
- <delete dir="${gen-folder}"/>
- </target>
</project>
View
40 android/proguard.cfg
@@ -0,0 +1,40 @@
+-optimizationpasses 5
+-dontusemixedcaseclassnames
+-dontskipnonpubliclibraryclasses
+-dontpreverify
+-verbose
+-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
+
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class com.android.vending.licensing.ILicensingService
+
+-keepclasseswithmembernames class * {
+ native <methods>;
+}
+
+-keepclasseswithmembers class * {
+ public <init>(android.content.Context, android.util.AttributeSet);
+}
+
+-keepclasseswithmembers class * {
+ public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+-keepclassmembers class * extends android.app.Activity {
+ public void *(android.view.View);
+}
+
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}
+
+-keep class * implements android.os.Parcelable {
+ public static final android.os.Parcelable$Creator *;
+}
View
11 android/project.properties
@@ -0,0 +1,11 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system use,
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+
+# Project target.
+target=android-10
View
68 android/utils/translate.py
@@ -1,68 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2010 ZXing authors
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Translate a string from English to all locales used in the Barcode
-# Scanner Android project
-#
-# Author: Neha Pandey
-
-from urllib2 import urlopen
-from urllib import urlencode
-import sys
-
-def translate (in_lang, out_lang, input):
- """Translate the input from in_lang to out_lang using Google Translate"""
- # Create the URL
- langpair = '%s|%s' % (in_lang, out_lang)
- base = 'http://ajax.googleapis.com/ajax/services/language/translate?'
- params = urlencode ((('v',1.0),
- ('q',input),
- ('langpair',langpair),) )
- url = base + params
- # Call translation
- content = urlopen(url).read()
-
- # Snip out unwanted fluff from the translation
- start_index = content.find('"translatedText":"') + 18
- translation = content [start_index:]
- end_index = translation.find('"}, "')
- output = translation[:end_index]
- return output
-
-# All the languages to translate to
-language_list = ['en', 'ar', 'cs', 'da', 'de', 'es',
- 'fi', 'fr', 'hu', 'it', 'ja', 'nl',
- 'pl', 'pt', 'ru', 'sv', 'zh-CN',
- 'zh-TW']
-
-if (len(sys.argv) < 3):
- print "Usage: %s name String to translate" % sys.argv[0]
- print "Sample: %s ask-banana Give me a banana" % sys.argv[0]
- import sys
- sys.exit (-1);
-
-# First argument is the name of the string
-string_name = sys.argv[1]
-# Remaining arguments is the string to be translated in English
-input_string =' '.join(sys.argv[2:])
-
-# Translate all languages
-for i in range(len(language_list)) :
- translation = translate ('en', language_list[i], input_string)
- xml_string = '<string name="' + string_name + '">' + \
- translation + '</string>'
- print language_list[i], xml_string
-
View
19 androidtest/ant.properties
@@ -0,0 +1,19 @@
+# This file is used to override default values used by the Ant build system.
+#
+# This file must be checked in Version Control Systems, as it is
+# integral to the build system of your project.
+
+# This file is only used by the Ant script.
+
+# You can use this to override default values such as
+# 'source.dir' for the location of your java source folder and
+# 'out.dir' for the location of your output folder.
+
+# You can also use it define how the release builds are signed by declaring
+# the following properties:
+# 'key.store' for the location of your keystore and
+# 'key.alias' for the name of the key to use.
+# The password will be asked during the build when you use the 'release' target.
+
+application-package=com.google.zxing.client.androidtest
+external-libs-folder=libs
View
379 androidtest/build.xml
@@ -14,330 +14,87 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
-<project name="ZXingTest" default="debug">
+<project name="ZXingTest" default="help">
- <!-- Normally the Android build system looks for a local.properties. Since that's only used
- to find the SDK location, I've removed it and pointed us at the global ZXing build.properties. -->
- <property file="../build.properties"/>
- <!-- Parts of the Android build system insist on the name 'sdk-location', so alias it. -->
- <property name="sdk.dir" value="${android-home}"/>
+ <!-- The local.properties file is created and updated by the 'android' tool.
+ It contains the path to the SDK. It should *NOT* be checked into
+ Version Control Systems. -->
+ <loadproperties srcFile="local.properties" />
- <!-- The build.properties file can be created by you and is never touched
- by the 'android' tool. This is the place to change some of the default property values
- used by the Ant rules.
- Here are some properties you may want to change/update:
+ <!-- The ant.properties file can be created by you. It is only edited by the
+ 'android' tool to add properties to it.
+ This is the place to change some Ant specific build properties.
+ Here are some properties you may want to change/update:
- application-package
- the name of your application package as defined in the manifest. Used by the
- 'uninstall' rule.
- source-folder
- the name of the source folder. Default is 'src'.
- out-folder
- the name of the output folder. Default is 'bin'.
+ source.dir
+ The name of the source directory. Default is 'src'.
+ out.dir
+ The name of the output directory. Default is 'bin'.
- Properties related to the SDK location or the project target should be updated
- using the 'android' tool with the 'update' action.
+ For other overridable properties, look at the beginning of the rules
+ files in the SDK, at tools/ant/build.xml
- This file is an integral part of the build system for your application and
- should be checked in in Version Control Systems.
+ Properties related to the SDK location or the project target should
+ be updated using the 'android' tool with the 'update' action.
- -->
- <property file="build.properties"/>
+ This file is an integral part of the build system for your
+ application and should be checked into Version Control Systems.
- <!-- The default.properties file is created and updated by the 'android' tool, as well as ADT.
- This file is an integral part of the build system for your application and
- should be checked in in Version Control Systems. -->
- <property file="default.properties"/>
+ -->
+ <property file="ant.properties" />
- <!-- Custom Android task to deal with the project target, and import the proper rules.
- This requires ant 1.6.0 or above. -->
- <path id="android.antlibs">
- <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
- <pathelement path="${sdk.dir}/tools/lib/sdklib.jar" />
- <pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" />
- <pathelement path="${sdk.dir}/tools/lib/apkbuilder.jar" />
- <pathelement path="${sdk.dir}/tools/lib/jarutils.jar" />
- </path>
+ <!-- The project.properties file is created and updated by the 'android'
+ tool, as well as ADT.
- <taskdef name="setup"
- classname="com.android.ant.SetupTask"
- classpathref="android.antlibs"/>
+ This contains project specific properties such as project target, and library
+ dependencies. Lower level build properties are stored in ant.properties
+ (or in .classpath for Eclipse projects).
- <!-- Execute the Android Setup task that will setup some properties specific to the target,
- and import the rules files.
- To customize the rules, copy/paste them below the task, and disable import by setting
- the import attribute to false:
- <setup import="false" />
+ This file is an integral part of the build system for your
+ application and should be checked into Version Control Systems. -->
+ <loadproperties srcFile="project.properties" />
- This will ensure that the properties are setup correctly but that your customized
- targets are used.
- -->
- <setup import="false" />
+ <!-- quick check on sdk.dir -->
+ <fail
+ message="sdk.dir is missing. Make sure to generate local.properties using 'android update project'"
+ unless="sdk.dir"
+ />
- <!-- Custom tasks -->
- <taskdef name="aaptexec"
- classname="com.android.ant.AaptExecLoopTask"
- classpathref="android.antlibs"/>
- <taskdef name="apkbuilder"
- classname="com.android.ant.ApkBuilderTask"
- classpathref="android.antlibs"/>
-
- <!-- Properties -->
-
- <property name="android-tools" value="${sdk.dir}/tools" />
- <property name="platform-tools" value="${sdk.dir}/platform-tools" />
-
- <!-- Input directories -->
- <property name="source-folder" value="src" />
- <property name="gen-folder" value="gen" />
- <property name="resource-folder" value="res" />
- <property name="asset-folder" value="assets" />
- <property name="source-location" value="${basedir}/${source-folder}" />
-
- <!-- folder for the 3rd party java libraries -->
- <!--<property name="external-libs-folder" value="../core" />-->
-
- <!-- folder for the native libraries -->
- <property name="native-libs-folder" value="libs" />
-
- <!-- Output directories -->
- <property name="gen-folder" value="gen" />
- <property name="out-folder" value="bin" />
- <property name="out-classes" value="${out-folder}/classes" />
- <property name="out-classes-location" value="${basedir}/${out-classes}"/>
- <!-- out folders for a parent project if this project is an instrumentation project -->
- <property name="main-out-folder" value="../${out-folder}" />
- <property name="main-out-classes" value="${main-out-folder}/classes"/>
-
- <!-- Intermediate files -->
- <property name="dex-file" value="classes.dex" />
- <property name="intermediate-dex" value="${out-folder}/${dex-file}" />
- <!-- dx does not properly support incorrect / or \ based on the platform
- and Ant cannot convert them because the parameter is not a valid path.
- Because of this we have to compute different paths depending on the platform. -->
- <condition property="intermediate-dex-location"
- value="${basedir}\${intermediate-dex}"
- else="${basedir}/${intermediate-dex}" >
- <os family="windows"/>
- </condition>
-
- <!-- The final package file to generate -->
- <property name="out-debug-package" value="${out-folder}/${ant.project.name}-debug.apk"/>
-
- <!-- Tools -->
- <condition property="exe" value=".exe" else=""><os family="windows"/></condition>
- <property name="adb" value="${platform-tools}/adb${exe}"/>
-
- <!-- rules -->
-
- <!-- 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}" />
- <mkdir dir="${gen-folder}" />
- <mkdir dir="${out-folder}" />
- <mkdir dir="${out-classes}" />
- </target>
-
- <!-- Generate the R.java file for this project's resources. -->
- <target name="resource-src" depends="dirs">
- <echo>Generating R.java / Manifest.java from the resources...</echo>
- <exec executable="${aapt}" failonerror="true">
- <arg value="package" />
- <arg value="-m" />
- <arg value="-J" />
- <arg path="${gen-folder}" />
- <arg value="-M" />
- <arg path="AndroidManifest.xml" />
- <arg value="-S" />
- <arg path="${resource-folder}" />
- <arg value="-I" />
- <arg path="${android.jar}" />
- </exec>
- </target>
-
- <!-- Generate java classes from .aidl files. -->
- <target name="aidl" depends="dirs">
- <echo>Compiling aidl files into Java classes...</echo>
- <apply executable="${aidl}" failonerror="true">
- <arg value="-p${android-aidl}" />
- <arg value="-I${source-folder}" />
- <arg value="-o${gen-folder}" />
- <fileset dir="${source-folder}">
- <include name="**/*.aidl"/>
- </fileset>
- </apply>
- </target>
-
- <!-- Compile this project's .java files into .class files. -->
- <target name="compile" depends="resource-src, aidl">
- <javac encoding="ascii" target="1.5" debug="false" extdirs=""
- destdir="${out-classes}"
- bootclasspathref="android.target.classpath"
- includeantruntime="false">
- <src path="${source-folder}" />
- <src path="${gen-folder}" />
- <classpath>
- <fileset dir="${external-libs-folder}" includes="*.jar"/>
- <!-- yeah, want to not use this mechanism above -->
- <pathelement path="../core/core.jar"/>
- <pathelement path="${main-out-classes}"/>
- </classpath>
- </javac>
-
- <unzip src="../core/core.jar" dest="${out-classes}" overwrite="true"/>
-
- <antcall target="optimize"/>
- </target>
-
- <target name="optimize" unless="no-optimize">
- <mkdir dir="optimized"/>
- <property name="libraryjars.path" refid="android.target.classpath"/>
- <java jar="${proguard-jar}" fork="true" failonerror="true">
- <jvmarg value="-Dmaximum.inlined.code.length=48"/>
- <arg value="-injars ${out-classes}"/>
- <arg value="-outjars optimized"/>
- <arg value="-libraryjars ${libraryjars.path}"/>
- <arg value="-keep class com.google.zxing.client.androidtest.*Activity"/>
- <arg value="-keep class com.google.zxing.client.androidtest.ViewfinderView { public * ; }"/>
- <arg value="-target 5"/>
- <arg value="-optimizationpasses 5"/>
- <arg value="-optimizations !field/*,!class/merging/*"/> <!-- works around dex VerifyError -->
- <arg value="-dontshrink"/>
- <arg value="-dontobfuscate"/>
- <arg value="-dontskipnonpubliclibraryclasses"/>
- <arg value="-verbose"/>
- <arg value="-dump proguard-dump.txt"/>
- </java>
- <delete dir="${out-classes}"/>
- <move file="optimized" tofile="${out-classes}"/>
- </target>
-
- <!-- Convert this project's .class files into .dex files. -->
- <target name="dex" depends="compile">
- <echo>Converting compiled files and external libraries into ${out-folder}/${dex-file}...</echo>
- <apply executable="${dx}" failonerror="true" parallel="true">
- <arg value="-JXmx256M"/>
- <arg value="--dex" />
- <arg value="--output=${intermediate-dex-location}" />
- <arg path="${out-classes-location}" />
- <fileset dir="${external-libs-folder}" includes="*.jar"/>
- </apply>
- </target>
-
- <!-- Put the project's resources into the output package file
- This actually can create multiple resource package in case
- Some custom apk with specific configuration have been
- declared in default.properties.
- -->
- <target name="package-resources">
- <echo>Packaging resources</echo>
- <aaptexec executable="${aapt}"
- command="package"
- manifest="AndroidManifest.xml"
- assets="${asset-folder}"
- androidjar="${android.jar}"
- apkfolder="${out-folder}"
- resourcefilename="${ant.project.name}">
- <res path="${resource-folder}"/>
- </aaptexec>
- </target>
-
- <!--
- Getting an error like this?
-
- [apply] UNEXPECTED TOP-LEVEL EXCEPTION:
- [apply] com.android.dx.cf.code.SimException: local variable type
- mismatch: attempt to set or access a value of type int using a local
- variable of type com.google.zxing.qrcode.decoder.Version. This is
- symptomatic of .class transformation tools that ignore local variable
- information.
-
- Build core/ with the 'build-no-debug' target. It's a long story.
- -->
-
- <!-- Package the application and sign it with a debug key.
- This is the default target when building. It is used for debug. -->
- <target name="debug" depends="dex, package-resources">
- <apkbuilder
- outfolder="${out-folder}"
- resourcefile="ZXingTest"
- apkfilepath="${out-folder}/ZXingTest-debug.apk"
- debugpackaging="true"
- debugsigning="true"
- verbose="false">
- <dex path="${intermediate-dex-location}" />
- <sourcefolder path="${source-folder}" />
- <jarfolder path="${external-libs-folder}" />
- </apkbuilder>
- <copy file="${out-folder}/ZXingTest-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}/ZXingTest-debug.apk"/>
- </exec>
- </target>
-
- <!-- Package the application without signing it.
- This allows for the application to be signed later with an official publishing key. -->
- <target name="release" depends="dex, package-resources">
- <apkbuilder
- outfolder="${out-folder}"
- resourcefile="ZXingTest"
- apkfilepath="${out-folder}/ZXingTest-unsigned.apk"
- debugpackaging="false"
- debugsigning="false"
- verbose="false">
- <dex path="${intermediate-dex-location}" />
- <sourcefolder path="${source-folder}" />
- <jarfolder path="${external-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 ZXingTest.apk ZXingTest-aligned.apk after signing</echo>
- </target>
-
- <!-- Install (or reinstall) the package on the default emulator -->
- <target name="install" depends="debug">
- <echo>Installing ${out-debug-package} onto default emulator...</echo>
- <exec executable="${adb}" failonerror="true">
- <arg value="install" />
- <arg value="-r" />
- <arg path="${out-debug-package}" />
- </exec>
- </target>
-
- <!-- Uinstall the package from the default emulator -->
- <target name="uninstall">
- <echo>Uninstalling ${application-package} from the default emulator...</echo>
- <exec executable="${adb}" failonerror="true">
- <arg value="uninstall" />
- <arg value="${application-package}" />
- </exec>
- </target>
+<!-- extension targets. Uncomment the ones where you want to do custom work
+ in between standard targets -->
+<!--
+ <target name="-pre-build">
+ </target>
+ <target name="-pre-compile">
+ </target>
+
+ /* This is typically used for code obfuscation.
+ Compiled code location: ${out.classes.absolute.dir}
+ If this is not done in place, override ${out.dex.input.absolute.dir} */
+ <target name="-post-compile">
+ </target>
+-->
- <target name="help">
- <echo>Android Ant Build. Available targets:</echo>
- <echo> help: Displays this help.</echo>
- <echo> debug: Builds the application and sign it with a debug key.</echo>
- <echo> release: Builds the application. The generated apk file must be</echo>
- <echo> signed before it is published.</echo>
- <echo> install: Installs the debug package onto a running emulator or</echo>
- <echo> device. This can only be used if the application has </echo>
- <echo> not yet been installed.</echo>
- <echo> reinstall: Installs the debug package on a running emulator or</echo>
- <echo> device that already has the application.</echo>
- <echo> The signatures must match.</echo>
- <echo> uninstall: uninstall the application from a running emulator or</echo>
- <echo> device.</echo>
- </target>
+ <!-- Import the actual build file.
+
+ To customize existing targets, there are two options:
+ - Customize only one target:
+ - copy/paste the target into this file, *before* the
+ <import> task.
+ - customize it to your needs.
+ - Customize the whole content of build.xml
+ - copy/paste the content of the rules files (minus the top node)
+ into this file, replacing the <import> task.
+ - customize to your needs.
+
+ ***********************
+ ****** IMPORTANT ******
+ ***********************
+ In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
+ in order to avoid having your file be overridden by tools such as "android update project"
+ -->
+ <!-- version-tag: 1 -->
+ <import file="${sdk.dir}/tools/ant/build.xml" />
- <target name="clean">
- <delete dir="${out-folder}"/>
- <delete dir="${gen-folder}"/>
- </target>
</project>
View
40 androidtest/proguard.cfg
@@ -0,0 +1,40 @@
+-optimizationpasses 5
+-dontusemixedcaseclassnames
+-dontskipnonpubliclibraryclasses
+-dontpreverify
+-verbose
+-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
+
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class com.android.vending.licensing.ILicensingService
+
+-keepclasseswithmembernames class * {
+ native <methods>;
+}
+
+-keepclasseswithmembers class * {
+ public <init>(android.content.Context, android.util.AttributeSet);
+}
+
+-keepclasseswithmembers class * {
+ public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+-keepclassmembers class * extends android.app.Activity {
+ public void *(android.view.View);
+}
+
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}
+
+-keep class * implements android.os.Parcelable {
+ public static final android.os.Parcelable$Creator *;
+}
View
11 androidtest/project.properties
@@ -0,0 +1,11 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system use,
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+
+# Project target.
+target=android-10
View
69 core/build.xml
@@ -24,76 +24,25 @@
<tstamp/>
</target>
- <target name="compile" depends="init">
+ <target name="build" depends="init">
<mkdir dir="build"/>
<javac srcdir="src"
destdir="build"
source="6"
target="6"
optimize="true"
- debug="${generate-debug}"
+ debug="true"
deprecation="true"
fork="true"
- includeantruntime="false"/>
- <jar jarfile="core.jar" basedir="build">
- <!-- These entries allow core.jar to function as an OSGi bundle, and also specifies
- additional attributes for compatibility with BugLabs's BUG platform.
- Thanks to David Albert for this change. -->
- <manifest>
- <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="Export-Package" value="com.google.zxing,com.google.zxing.common,com.google.zxing.client.result"/>
- <attribute name="Bug-Bundle-Type" value="Application"/>
- </manifest>
- </jar>
- </target>
-
- <target name="build" depends="clean">
- <antcall target="compile">
- <param name="generate-debug" value="true"/>
- </antcall>
- </target>
-
- <!-- This target is needed for building a core.jar which the Android client can use and run
- ProGuard on successfully, because dx doesn't like debugging info. -->
- <target name="build-no-debug" depends="clean">
- <antcall target="compile">
- <param name="generate-debug" value="false"/>
- </antcall>
+ includeantruntime="false">
+ </javac>
+ <jar jarfile="core.jar" basedir="build"/>
</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="${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-3/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 name="export" depends="build">
+ <jar jarfile="core.jar" basedir="build"/>
+ <copy file="core.jar" todir="../android/libs" overwrite="true"/>
+ <copy file="core.jar" todir="../androidtest/libs" overwrite="true"/>
</target>
<target name="build-test" depends="init,build">
Please sign in to comment.
Something went wrong with that request. Please try again.