Skip to content

Instantly share code, notes, and snippets.

@mschoch
Created August 16, 2011 19:03
Show Gist options
  • Save mschoch/1149866 to your computer and use it in GitHub Desktop.
Save mschoch/1149866 to your computer and use it in GitHub Desktop.
An Ant build script to assist in adding Mobile Couchbase to your Android project
<?xml version="1.0" encoding="UTF-8"?>
<project name="couchbase-build" default="help">
<property file="build.properties" />
<target name="help">
<echo>
To use this script, please set the property android.couchbase.dir in your build.properties file to
point to the location you installed Android-Couchbase.
The following targets are available:
add-couchbase-android-library-reference - Check/Add requried Android-Couchbase library reference
update-couchbase-android-assets - Check/Update required Android-Couchbase assets
check-manifest-permissions - Check/Suggest required permissions in AndroidManifest.xml
suggest-manifest-service - Check/Suggest required service definition in AndroidManifest.xml
all - Run all checks
</echo>
</target>
<target name="all" depends="add-couchbase-android-library-reference,update-couchbase-android-assets,check-manifest-permissions,suggest-manifest-service">
</target>
<!-- Library Reference -->
<target name="check-couchbase-android-library-reference" depends="_init">
<condition property="contains.android.library.reference">
<resourcecontains resource="default.properties" substring="Android-Couchbase"/>
</condition>
</target>
<target name="add-couchbase-android-library-reference" depends="check-couchbase-android-library-reference" unless="contains.android.library.reference">
<exec executable="android" vmlauncher="false">
<arg value="update"/>
<arg value="project"/>
<arg value="--path"/>
<arg value="${basedir}"/>
<arg value="--library"/>
<arg value="${android.couchbase.dir}"/>
</exec>
</target>
<!-- Assets -->
<target name="check-couchbase-android-assets" depends="_init">
<uptodate property="android.couchbase.assets.uptodate">
<srcfiles dir= "${android.couchbase.dir}/assets" includes="**/*"/>
<mapper type="glob" from="couchbase-*.tgz.jpg"
to="${basedir}/assets/couchbase-*.tgz.jpg"/>
</uptodate>
</target>
<target name="update-couchbase-android-assets" depends="check-couchbase-android-assets" unless="android.couchbase.assets.uptodate">
<copy todir="${basedir}/assets/">
<fileset dir="${android.couchbase.dir}/assets" includes="**/*.tgz.jpg"/>
<globmapper from="*" to="*"/>
</copy>
<echo>Your Android-Couchbase assets have been updated, you may remove the old assets.</echo>
</target>
<!-- Permissions -->
<target name="check-manifest-permissions" depends="suggest-manifest-permission.ACCESS_NETWORK_STATE,suggest-manifest-permission.INTERNET,suggest-manifest-permission.WRITE_EXTERNAL_STORAGE">
</target>
<target name="suggest-manifest-permission.ACCESS_NETWORK_STATE"
depends="check-manifest-permission.ACCESS_NETWORK_STATE"
unless="permission.ACCESS_NETWORK_STATE">
<echo>Your AndroidManifest.xml appears to be missing a required permission. Please add:</echo>
<echo/>
<echo><![CDATA[<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>]]></echo>
</target>
<target name="check-manifest-permission.ACCESS_NETWORK_STATE" depends="_init">
<condition property="permission.ACCESS_NETWORK_STATE">
<resourcecontains resource="AndroidManifest.xml" substring="android.permission.ACCESS_NETWORK_STATE"/>
</condition>
</target>
<target name="suggest-manifest-permission.INTERNET"
depends="check-manifest-permission.INTERNET"
unless="permission.INTERNET">
<echo>Your AndroidManifest.xml appears to be missing a required permission. Please add:</echo>
<echo/>
<echo><![CDATA[<uses-permission android:name="android.permission.INTERNET"></uses-permission>]]></echo>
</target>
<target name="check-manifest-permission.INTERNET" depends="_init">
<condition property="permission.INTERNET">
<resourcecontains resource="AndroidManifest.xml" substring="android.permission.INTERNET"/>
</condition>
</target>
<target name="suggest-manifest-permission.WRITE_EXTERNAL_STORAGE"
depends="check-manifest-permission.WRITE_EXTERNAL_STORAGE"
unless="permission.WRITE_EXTERNAL_STORAGE">
<echo>Your AndroidManifest.xml appears to be missing a required permission. Please add:</echo>
<echo/>
<echo><![CDATA[<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>]]></echo>
</target>
<target name="check-manifest-permission.WRITE_EXTERNAL_STORAGE">
<condition property="permission.WRITE_EXTERNAL_STORAGE">
<resourcecontains resource="AndroidManifest.xml" substring="android.permission.WRITE_EXTERNAL_STORAGE"/>
</condition>
</target>
<!-- Service -->
<target name="suggest-manifest-service"
depends="check-manifest-service"
unless="service.couch.exists">
<echo>Your AndroidManifest.xml appears to be missing a required service. Please add:</echo>
<echo/>
<echo><![CDATA[<service android:name="com.couchbase.libcouch.CouchService" android:enabled="true" android:exported="false"></service>]]></echo>
</target>
<target name="check-manifest-service">
<condition property="service.couch.exists">
<resourcecontains resource="AndroidManifest.xml" substring="com.couchbase.libcouch.CouchService"/>
</condition>
</target>
<target name="_init">
<!-- don't continue if it appears android.couchbase.dir is set incorrectly -->
<available file="${android.couchbase.dir}/src/com/couchbase/libcouch/CouchbaseEmbeddedServer.java"
property="android.couchbase.dir.valid"/>
<fail message="Property android.couchbase.dir does not appear to be set correctly." unless="android.couchbase.dir.valid"/>
</target>
</project>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment