Hoi,
habs jetzt so weit hin bekommen. Man braucht erstmal Maven und das Android Maven Plugin.
Da das momentan nur SDK Version 16 unterstützt muss man folgenden Befehl ausführen, um das SDK 17 rein zu bügeln:
mvn install:install-file \
-Dfile=$ANDROID_HOME/platforms/android-17/android.jar \
-DgroupId=com.google.android \
-DartifactId=android \
-Dversion=17 \
-Dpackaging=jar
(Das $ANDROID_HOME ggf. einfach durch den absoluten Pfad ersetzen)
Nun, da das Plugin eben für Version 16 ist, in Version 17 aber das Tool aapt verschoben wurde, muss man noch Links setzen
ln -s $ANDROID_HOME/build-tools/17.0.0/aapt $ANDROID_HOME/platform-tools/aapt
ln -s $ANDROID_HOME/build-tools/17.0.0/lib $ANDROID_HOME/platform-tools/lib
Nun klickt man unter Eclipse Rechtsklick aufs Projekt > Configure (ganz unten) > Convert to Maven Project und passt dann sein pom.xml an
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.company</groupId>
<artifactId>my.package</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>apk</packaging>
<name>MyProject</name>
<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>17</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>my.company</groupId>
<artifactId>RequiredProject</artifactId>
<version>1.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<sourceDirectory>src</sourceDirectory>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.5.3</version>
<extensions>true</extensions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<executions>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</execution>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</execution>
</executions>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<configuration>
<sdk>
<!-- platform or api level (api level 4 = platform 1.6) -->
<platform>17</platform>
</sdk>
<proguard>
<skip>true</skip>
</proguard>
</configuration>
</plugin>
</plugins>
</build>
<parent>
<groupId>my.company</groupId>
<artifactId>SomeDefaultPom</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
</project>
Alles anzeigen
So, und das ist jetzt ganz wichtig: das RequiredProject MUSS mit Java 1.6 gebuildet werden, sonst ist es nicht mit Android kompatibel und wird beim builden des .apk Files einfach weg gelassen. Betritt man dann später in der App die entsprechende Code-Stelle, in der eigentlich etwas aus dem RequiredProject benutzt werden soll, schmiert er einfach mit einem NoClassDefFoundError ab!
Wurde das alles beachtet kann man mittels Rechtsklick aufs Projekt > Run As ... > Maven build ... folgende Parameter einstellen:
Goals: clean install android:generate-sources android:deploy android:run
Parameter (Rechts button "Add...") :
Name: android.sdk.path
Wert: $ANDROID_HOME (oder den absoluten Pfad zum sdk Ordner)
Im Tab JRE habe ich noch einmal explizit Alternate JRE: Java SE 6 ausgewählt
Mit einem Klick auf Run dauert es einige Zeit und er buildet alles mit Dependencies, schiebt es auf ein angeschlossenes Device und startet die App.
Meine nächsten Schritte: Versuchen das ganze via Hudson builden zu lassen
Gruß,
matze