Home

Awesome

android-archetypes

This projects provides several Maven archetypes for Android. Those archetypes allows to quickly bootstrap a Maven project to develop an android application.

These artifacts are based on the android-maven-plugin (http://code.google.com/p/maven-android-plugin/). It currently uses the 3.8.2 version.

The android-quickstart archetype

The quickstart archetype creates a simple android application ready to be deployed on an android device. It's a pretty simple way to initiate an android project:

mvn archetype:generate \
  -DarchetypeArtifactId=android-quickstart \
  -DarchetypeGroupId=de.akquinet.android.archetypes \
  -DarchetypeVersion=1.0.11 \
  -DgroupId=your.company \
  -DartifactId=my-android-application

You can also set three optional properties :

Once generated, the application is ready to be built and deployed (you may need to configure your ANDROID_HOMEenvironment variable to point to your Android SDK). Start an android emulator, or plug an Android dev phone, and launch:

cd my-android-application
mvn clean install android:deploy android:run

The application will be built, deployed and launched on the device.

The android-with-test archetype

This archetype creates a multi-module project containing an android application and a project testing this application (integration tests using instrumentation).

mvn archetype:generate \
  -DarchetypeArtifactId=android-with-test \
  -DarchetypeGroupId=de.akquinet.android.archetypes \
  -DarchetypeVersion=1.0.11 \
  -DgroupId=com.foo.bar \
  -DartifactId=my-android-project \
  -Dpackage=com.foo.bar.android

You can also set three optional properties :

Once generated, the application is ready to be built and tested. Start an android emulator, or plug an Android dev phone, and launch:

cd my-android-project
mvn clean install

The application will be built, then the integration-tests will be built and executed on the Android device. If you whish to launch just the application:

cd my-android-project
mvn clean install android:deploy android:run

The android-library-quickstart archetype

The library quickstart archetype creates a simple Android library ready to be used with another Android application. It's a pretty simple way to initiate an android project:

mvn archetype:generate \
  -DarchetypeArtifactId=android-library-quickstart \
  -DarchetypeGroupId=de.akquinet.android.archetypes \
  -DarchetypeVersion=1.0.11 \
  -DgroupId=your.company \
  -DartifactId=my-android-application

You can also set three optional properties :

Once generated, the library is ready to be built:

cd my-android-application
mvn clean install

The android-release archetype

This archetype extends android-with-test with release management.

mvn archetype:generate \
  -DarchetypeArtifactId=android-release \
  -DarchetypeGroupId=de.akquinet.android.archetypes \
  -DarchetypeVersion=1.0.11 \
  -DgroupId=com.foo.bar \
  -DartifactId=my-android-project \
  -Dpackage=com.foo.bar.android

You can also set three optional properties :

Once generated, the application is ready to be built and tested. Start an Android emulator, or plug an Android dev phone, and launch:

cd my-android-project
mvn clean install

The application will be built, then the integration-tests will be built and executed on the Android device.

If you whish to launch just the application:

cd my-android-project
mvn clean install android:deploy android:run

By default the app is built in "debug mode". This means BuildCongif.DEBUG is true and android:debuggable="true" and the apk is signed with the debug key (~/.android/debug.keystore).

When you release your application, it will generate a signed, zipaligned and ProGuard-processed apk. You will have to add a profile to your ~/.m2/settings.xml file containing the signing informations:

<profile>
  <id>android-release</id>
  <properties>
    <sign.keystore>/path/to/keystore</sign.keystore>
    <sign.alias>key alias</sign.alias>
    <sign.storepass>keystore password</sign.storepass>
    <sign.keypass>key password</sign.keypass>
  </properties>
</profile>

At this point you can generate a signed apk using the Maven release plugin:

mvn release:prepare
mvn release:perform -DreleaseProfiles=android-release,release
mvn release:clean

Or, if you wish to generate a signed apk without performing the whole release process:

mvn clean deploy -Pandroid-release,release

Be aware that Android cannot re-deploy artifacts using a different key, so be sure to undeploy all artifacts before running the release.

The android-gcm-quickstart archetype

The android-gcm-quickstart creates a simple Google Cloud Messaging application.

mvn archetype:generate \
  -DarchetypeArtifactId=android-gcm-quickstart \
  -DarchetypeGroupId=de.akquinet.android.archetypes \
  -DarchetypeVersion=1.0.11 \
  -DgroupId=your.company \
  -DartifactId=my-android-application
  -DsenderId=my-sender-id

The 'senderId' value is found in the Google APIs console. You can also set one optional property :

Generated files includes the assets/gcmutils.properties configuration file, containing GCM specific values. Once generated, the library is ready to be built with:

cd my-android-application
mvn clean install

Before starting the test server add the API Key configuration. This can be added in the user settings file, ~/.m2/settings.xml, by system property -DapiKey= or in the pom.xml (not recommended). When the key is added, you can start the GCM test server:

mvn gcmutils:run-server

optionally:

mvn gcmutils:run-server -DapiKey=my-api-key

By default the server is available at http://localhost:9595

The gcmutils-maven-plugin provides three additional configuration options:

Detailed information on the gcmutils-maven-plugin is available here. For more information on GCM and how to obtain the senderId and API Key, see GCM: Getting Started.

Setting the maven-android-plugin version

You can change the default maven-android-plugin version by specifying the 'android-plugin-version' parameter.

Credits

The android-archetype-project is an open source project licensed under the Apache License 2.0. It is founded by akquinet

Technical Notes