Recreate build files for android, androidtest, for latest SDK

git-svn-id: https://zxing.googlecode.com/svn/trunk@2008 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
srowen 2011-11-02 19:34:19 +00:00
parent 6f5841d8bb
commit 79add84a5a
11 changed files with 280 additions and 743 deletions

View file

@ -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"/>

19
android/ant.properties Normal file
View file

@ -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 file

@ -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"/>
<!-- 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>
<!-- Properties -->
/* 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>
-->
<property name="android-tools" value="${sdk.dir}/tools" />
<property name="platform-tools" value="${sdk.dir}/platform-tools" />
<!-- Import the actual build file.
<!-- 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}" />
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.
<!-- folder for the 3rd party java libraries -->
<!--<property name="external-libs-folder" value="../core" />-->
***********************
****** 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" />
<!-- 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>
<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>
<target name="clean">
<delete dir="${out-folder}"/>
<delete dir="${gen-folder}"/>
</target>
</project>

40
android/proguard.cfg Normal file
View file

@ -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 file

@ -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 file

@ -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 file

@ -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 file

@ -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"/>
<!-- 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>
<!-- Properties -->
/* 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>
-->
<property name="android-tools" value="${sdk.dir}/tools" />
<property name="platform-tools" value="${sdk.dir}/platform-tools" />
<!-- Import the actual build file.
<!-- 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}" />
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.
<!-- folder for the 3rd party java libraries -->
<!--<property name="external-libs-folder" value="../core" />-->
***********************
****** 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" />
<!-- 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>
<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>
<target name="clean">
<delete dir="${out-folder}"/>
<delete dir="${gen-folder}"/>
</target>
</project>

40
androidtest/proguard.cfg Normal file
View file

@ -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 file

@ -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 file

@ -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>
includeantruntime="false">
</javac>
<jar jarfile="core.jar" basedir="build"/>
</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>
</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">