options( project.name "blockdroid" sdk_folder "/home/pj/bin/software/android" android_framework "/home/pj/bin/software/android/tools/lib/framework.aidl" resource_dir "res" asset_dir "assets" srcdir "src" outdir "bin" external_libs "lib" native_libs "lib" outdir_classes "bin/classes" intermediate_dex "bin/classes.dex" outdir_classes "bin/classes" resources_package 'bin/blockdroid.ap_' debug_package "bin/blockdroid-debug.apk" unsigned_package "bin/blockdroid-unsigned.apk" outdir_r "src" manifest "AndroidManifest.xml" android_jar "/home/pj/bin/software/android/android.jar" javac "javac" android_tools "/home/pj/bin/software/android/tools" apk_builder "/home/pj/bin/software/android/tools/apkbuilder" aapt "/home/pj/bin/software/android/tools/aapt" aidl "/home/pj/bin/software/android/tools/aidl" adb "/home/pj/bin/software/android/tools/adb" dx "/home/pj/bin/software/android/tools/dx" ) depends( resource_src [ 'dirs' ] aidl [ 'dirs' ] compile [ 'dirs' 'resource_src' 'aidl' ] dex [ 'compile' ] debug [ 'dex' 'package_res' ] release [ 'dex' 'package_res' ] install [ 'debug' ] reinstall [ 'debug' ] build [ 'release' ] ) targets( dirs [ sh [ $ if [ ! -d ${outdir} ]; then $ mkdir ${outdir} $ fi $ if [ ! -d ${outdir_classes} ]; then $ mkdir ${outdir_classes} $ fi ] ] resource_src [ log "Generating R.java / Manifest.java from the resources..." $ ${aapt} package -m -J ${outdir_r} -M ${manifest} -S ${resource_dir} -I ${android_jar} ] aidl [ log "Compiling aidl files into Java classes..." sh [ $ input=`find ${srcdir} -name \*.aidl` $ if [ "x$input" != x ]; then $ ${aidl} -p${android_framework} -I${srcdir} $input $ fi ] ] compile [ sh [ $ classpath=`find ${external_libs} -name \*.jar -printf "%%p:" | head -c -1` $ if [ "x$classpath" != x ]; then $ classpath="-classpath $classpath" $ fi $ javafiles=`find ${srcdir} -name \*.java` $ ${javac} -encoding ascii -d ${outdir_classes} -bootclasspath ${android_jar} $classpath $javafiles ] ] dex [ log "Converting compiled files and external libraries into dex..." sh [ $ extjars=`find ${external_libs} -name \*.jar` $ ${dx} --dex --output=${intermediate_dex} ${outdir_classes} ${extjars} ] ] package_res sh [ $ asset_opt="" $ if [ -d $asset_dir ]; then $ asset_opt="-A ${asset_dir}" $ fi $ ${aapt} package -f -M ${manifest} -S ${resource_dir} ${asset_opt} -I ${android_jar} -F ${resources_package} ] debug [ log "Packaging ${debug_package}, and signing it with a debug key..." $ ${apk_builder} ${debug_package} -z ${resources_package} -f ${intermediate_dex} -rf ${srcdir} -rj ${external_libs} -nf ${native_libs} ] release [ log "Packaging %(unsigned_package)s for release..." sh [ $ extlib_opt="" $ if [ -d $external_libs ]; then $ extlib_opt="-rj ${external_libs}" $ fi $ nativelib_opt="" $ if [ -d $native_libs ]; then $ nativelib_opt="-nf ${native_libs}" $ fi $ ${apk_builder} ${unsigned_package} -u -z ${resources_package} -f ${intermediate_dex} -rf ${srcdir} ${extlib_opt} ${nativelib_opt} ] log "It will need to be signed with jarsigner before being published." ] install [ log "Installing ${debug_package} onto default emulator..." $ ${adb} install ${debug_package} ] reinstall [ log "Installing ${debug_package} onto default emulator..." $ ${adb} install -r ${debug_package} ] uninstall [ log "Uninstalling ${application_package} from the default emulator..." $ ${adb} uninstall ${application_package} ] clean [ $ find ${srcdir} -name \*.class | xargs rm -f ] build [ needs [ 'clean' ] ] )