Une usine logicielle est un ensemble d’outils et de pratiques permettant d’automatiser les différentes étapes du développement d’un logiciel
L'intégration continue est un ensemble de pratiques consistant à vérifier à chaque modification de code source que le résultat des modifications ne produit pas de régression dans l'application
Le déploiement continu, prolongement de l'intégration continue, est une pratique visant à réduire le plus possible le temps écoulé entre l'écriture d'une nouvelle ligne de code et l'utilisation réelle de ce même code par des utilisateurs finaux.
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}
apply plugin: 'android'
android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    buildTypes {
        release {
            runProguard false
        }
    }
}
dependencies {
    ..
}
<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/xsd/maven-4.0.0.xsd">
    <modelversion>4.0.0</modelversion>
    <groupid>fr.devfest.marseille</groupid>
    <artifactid>Devfest</artifactid>
    <version>1.0.0.0</version>
    <packaging>apk</packaging>
    <properties>
        <project.build.sourceencoding>UTF-8</project.build.sourceencoding>
    </properties>
    <dependencies>
        ...
    </dependencies>
    <build>
        <finalname>${project.artifactId}-${project.version}</finalname>
        <sourcedirectory>src</sourcedirectory>
        <testsourcedirectory>test</testsourcedirectory>
        <plugins>
            <plugin>
                <groupid>com.jayway.maven.plugins.android.generation2</groupid>
                <artifactid>android-maven-plugin</artifactid>
                <version>3.6.0</version>
                <extensions>true</extensions>
                <configuration>
                    <!-- <sdk> <platform>16</platform> </sdk> -->
                    <sdk>
                        <path>${env.ANDROID_HOME}</path>
                        <!-- <platform>2.2</platform> -->
                        <platform>17</platform>
                    </sdk>
                    <dex>
                        <jvmarguments>
                            <argument>-Xms512m</argument>
                            <argument>-Xmx1024m</argument>
                        </jvmarguments>
                    </dex>
                </configuration>
                <executions>
                    <!-- <execution> <id>startEmulator</id> <phase>initialize</phase> <goals>
                        <goal>emulator-start</goal> </goals> </execution> -->
                    <execution>
                        <id>alignApk</id>
                        <phase>package</phase>
                        <goals>
                            <goal>zipalign</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactid>maven-compiler-plugin</artifactid>
                <configuration>
                    <source>1.7
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <groupid>org.apache.maven.plugins</groupid>
                <artifactid>maven-jarsigner-plugin</artifactid>
                <executions>
                    <execution>
                        <id>signing</id>
                        <goals>
                            <goal>sign</goal>
                            <goal>verify</goal>
                        </goals>
                        <phase>package</phase>
                        <inherited>true</inherited>
                        <configuration>
                            <removeexistingsignatures>true</removeexistingsignatures>
                            <archivedirectory>
                            <includes>
                                <include>${project.build.directory}/${project.artifactId}-${project.version}.apk</include>
                            </includes>
                            ...
                        </archivedirectory></configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- the signed apk then needs to be zipaligned -->
            <plugin>
                <groupid>com.jayway.maven.plugins.android.generation2</groupid>
                <artifactid>maven-android-plugin</artifactid>
                <inherited>true</inherited>
                <configuration>
                    <sign>
                        <debug>false</debug>
                    </sign>
                    <zipalign>
                        <verbose>true</verbose>
                        <inputapk>${project.build.directory}/${project.artifactId}-${project.version}.apk</inputapk>
                        <outputapk>${project.build.directory}/${project.artifactId}-${project.version}-signed-aligned.apk
                        </outputapk>
                    </zipalign>
                    <skip>false</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>alignApk</id>
                        <phase>package</phase>
                        <goals>
                            <goal>zipalign</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>release</id>
            <properties>
                <android.debuggable>false</android.debuggable>
                <android.release>true</android.release>
            </properties>
        </profile>
    </profiles>
</project>
adb shell monkey -p your.package.name -v 500