Migration AndroidStudio…

12
janvier
2015

Migration AndroidStudio…

Android2ee

Et voilà, Eclipse n’est plus l’I.D.E. de référence pour le développement Android (Ils ont annoncer avoir arrêté le développement de l’A.D.T. le 8 décembre mais le billet a disparu d’internet depuis:) et du coup, on commence à migrer les projets vers Android Studio (eh oui, c’est l’IDE officielle maintenant :Annonce officielle)
C’est parti dans la confiance, on y croit à cette migration, elle va bien se passer, il n’y a pas de raison; L’export d’Eclipse nous expliquant qu’il n’est plus nécessaire d’exporter ses projets au format gradle, AndroidStudio importe ça super bien….


Alors effectivement, le projet s’importe nickel dans AndroidStudio… Oui, mais moi, je veux un projet avec Gradle comme système de build et là, comme d’habitude avec ce genre de choses (migration, administration, installation) j’ai la maffre (ou je la génère, je n’en sais rien) mais dans tous les cas, là j’ai pleuré.
En fouillant un peu, ben, non, quand dans AndroidStudio tu souhaites avoir un projet gradlelisé, on t’envoie sur une page d’aide (Aide) qui te dit que t’as qu’à exporter ton projet à partir d’Eclipse… :(

Bon, donc du coup, tu ré-ouvres Eclipse qui te dit « J’ai perdu l’android-sdk »… Quoi comment ça ? tu l’as perdu, j’ai rien touché !!! Bon, j’ai juste ouvert AndroidStudio qui a éssayer de mettre à jour l’Android SDK sans y réussir…
Bon donc du coup, tu veux migrer tes projets à partir d’Eclipse qui vient de faire pêter les deux genoux par AndroidStudio, ah ben les joies de l’informatique.
Quand même, dans mon malheur, j’ai une sauvegarde complète de mon dernier android sdk (genre 7Go zippé avec tout de la version eclair à maintenant) que je restaure. Entre temps, j’avoue, j’ai essayé de créé un fichier gradle.buid à la main (je me suis fais jeter sur la version du plugin gradle), j’ai éssayer l’export en utilisant l’android-sdk que m’avait ramené AndroidStudio (sans tenir compte du mien)… bref, j’ai fait plein d’essaies infructueux… Et là, j’y crois à mort, ça va marcher.
Vous avez deviné, j’écris le blog en même temps que je fais mes migrations, je me dis à chaud, je ne vais rater aucune des petites galères, des échecs et autres pertes de temps :)
Tout ça étant fait, je repars avec mon Eclipse et son android-sdk flambant neuf, pour mon export… qui plante à la dernière fenêtre, l’appuie sur le bouton finish ne fait rien, pas de message d’erreur, pas d’action, le grand néant. Ca ma rapelle quand j’ai commencé à apprendre à ajouter Maven sur les projets Android, juste l’enfer pendant quelques semaines.ExportEclipseVersAS
Bon, okay, je me dis c’est mon projet, il utilise la support-v7.
Du coup j’essaie avec un autre projet qui n’a pas de dépendances et … suspsens … ça marche.
Le fichier gradle.build est le suivant:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.+'
    }
}
apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    compileSdkVersion 10
    buildToolsVersion "21.0.1"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src//... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

Bon, mais même si l’export est fait, il faut tester l’import dans AndroiStudio. Le résultat:
Error:The project is using an unsupported version of the Android Gradle plug-in (0.12.2). The recommended version is 1.0.0.
Fix plugin version and re-import project
Bon, y’a plus qu’à mettre à jour le fichier avec classpath ‘com.android.tools.build:gradle:1.0.0′ et c’est bon.
A cette étape, je suis sauvé, j’ai le gradle.build de base, avec la support je n’aurai qu’à rajouter compile ‘com.android.support:palette-v7:21.0.0′ dans la partie dependencies.

Et là, un neurone se réveille et je me dis, vérifie ton SDKManager pour voir s’il n’y a pas eu d’update ce dernier mois pour voir si ça change les choses. Il y a eu trois update, autant te dire que ça sent la livraison moisie et les corrections de bugs, mais là ça devrait aller, la dernière à plus d’un mois. Donc une heure de téléchargement plus tard, quand tout est à jour, je reprends mon projet initial, export au format gradle, j’y crois (un peu pas trop) et ça plante pareil.

Bon, ben à la mano le fichier gradle.build :) même pas peur, je le pressentais que cette migration ne se ferrait pas en douceur et que ça allait me prendre quelques heures… et plus si affinité.

Le fichier que j’utilise est le suivant:

//Pour chrashlytics voir:http://stackoverflow.com/questions/23810824/example-gradle-build-files-for-referencing-crashlytics-from-app-and-library-proj

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
    }
}
apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
   compile 'com.android.support:support-v4:21.+'
    compile 'com.android.support:appcompat-v7:21.0.+'

    //compile 'com.android.support:recyclerview-v7:21.+'
    //compile 'com.android.support:cardview-v7:21.+'
    //compile 'com.google.code.gson:gson:2.+'
}

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"
    defaultConfig {
        applicationId "com.android2ee.formation.restservice.sax.forecastyahoo"
        minSdkVersion 8
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
    }
}

L’importation et la compilation ont marché direct, sauvé.
Donc mon conseil, créez un fichier gradle.build à la racine de votre projet, copiez/collez le contenu de mon fichier dedans et faites l’import dans AndroidStudio en utilisant l’import gradle et en choisissant dans votre projet le fichier gradle.build.

J’ai encore plus de 60 projets à migrer, je vous tiendrai au courant si je rencontre de nouveau problème.
Bonne migration et bon courage, vas falloir s’y faire à ce nouvel I.D.E. :)
A bientôt.

Mathias Séguy
Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.

Fondateur Android2EE
Formation – Expertise – Consulting Android.
Ebooks pour apprendre la programmation sous Android.
AndroidEvolution

Retrouvez moi sur Google+
Suivez moi sur Twitter
Rejoignez mon réseau LinkedIn ou Viadeo

Auteur d'origine: MathiasSeguy