All pastes #1372195 Raw Edit

android ant build script transla

public text v1 · immutable
#1372195 ·published 2009-03-25 22:21 UTC
rendered paste body
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' ]
	]

)