IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Studio Java Discussion :

Android Studio 0.8: créer et partager une librairie


Sujet :

Android Studio Java

  1. #1
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut Android Studio 0.8: créer et partager une librairie
    Bonjour,

    Je débute avec Android et je commence a m’acclimater au langage et à l'environnement Android Studio

    J'ai l'habitude de me créer des outils génériques et réutilisables et là... je sèche un peu.
    J'ai bien vu qu'on pouvait créer des modules librairies dans les projets, mais c'est DANS le projet, donc je vois pas
    l’intérêt. pour moi une librairie doit être en dehors du projet et disponible pour les autres projets...

    En cherchant un peu, j'ai vu qu'on pouvait créer des projets en tant que librairies autonomes et qui peuvent être
    "atteignables" depuis d'autres projets normaux.

    1. je n'arrive pas à transformer un projet classique en projet librairie par exemple: com.moi.malib
    j'ai cru voir qu'il fallait modifier build.grable mais j'y suis pas arrivé
    2. j'en suis pas encore là et j'ai donc pas encore cherché mais je pose la question quand même,
    comment utiliser cette librairie ? je doute qu'il faille juste importer "com.moi.malib" dans une classe
    j'imagine qu'il faut d'abord référencer quelque part cette librairie dans mon projet...

    il y a assez peu d'infos claires sur le net sur ce sujet, si quelqu'un a déjà eu ce problème...

    merci d'avance !
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  2. #2
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Je me réponds à moi-même

    J'ai croisé une solution pragmatique et pas bête mais ô combien très moche.
    Le principe: utiliser les liens symboliques.

    1. créer un projet 'MesBibs'
    2. à l’intérieur créer un module 'MonModule1' (et 2, 3 ...) pour intégrer ses classes outils
    c'est tout
    pour infos, le chemin du projet est: C:\mesprojets\MesBibs

    Maintenant, dans mon projet qui se trouve dans C:\mesprojets\MonProjet
    1. ouvrir la console dos et se positionner dans C:\mesprojets\MonProjet
    2. créer un lien symbolique vers le dossier 'MesBibs' de manière à obtenir C:\mesprojets\MonProjet\MesBibs
    (pour info la commande est: mklink /j .\Mesbibs c:\mesprojets\mesbibs)
    3. dans settings.gradle, ajouter ':mesbibs:monmodules1'
    4. dans la structure du projet, le module 'MonModule1' est déjà référencé
    5. dans 'app', ajouter la dépendance vers ce module (app/dependencies/Ajouter/Module dependency) -> :MesBibs:MonModule1

    et voila, les classes de MonModules1 sont accessibles dans monprojet (et pour tout autre projet)

    vala vala, c'est très moche mais ca fonctionne.
    je ne sais pas si dans le temps ca peut tenir sans risque d'incohérences, mais en attendant une réponse plus propre (ou une fonction adéquate
    dans android studio), je prends !

    je laisse le fil ouvert quand même..

    Bonne soirée!
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    De mémoire parce que j'ai d'AS sous les yeux :

    Admettons que tu as déjà créer un projet library.
    Dans le projet ou tu as besoin d'utiliser cette librairie tu fais File => Project Structure => Module , là doit y'avoir un bouton "add" ou "+" et ca devrait te proposer "Import Existing Project" où tu n'as plus qu' à choisir ton projet librairie.
    Ne reste plus qu' à synchroniser tes fichiers gradles via l'icone adéquat
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Merci pour ta réponse

    oui le module librairie serait créé (copié) *dans* le projet

    et l'idée qu'il y ait le même code physiquement à autant d'endroit que de projets
    ne me plait pas spécialement même avec une synchronisation x ou y.

    Donc pour le moment je reste avec mon lien symbolique. qui fait croire à AS que
    le module librairie est dans le projet - mais qui est aussi dans tous les autres projets -
    tout en ayant le code physiquement à un seul endroit.

    Merci quand même
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  5. #5
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Avec ou sans lien symbolique, c'est le fonctionnement standard d'IntelliJ IDEA/Android Studio.
    En important un projet existant, celui-ci est considéré comme dans ton projet, mais il n'est pas dupliqué, il reste au même endroit en exemplaire unique.

    Tu as un projet bibliothèque, qui est à un seul endroit, et qui le reste. Quand tu l'importes, L'IDE, dans sa configuration projet, écrit un truc comme "le projet MaBibliothèque au chemin ... est à utiliser avec le projet ici". Il n'est en aucun cas dupliqué. Les modifications que tu portes donc sur ce projet bibliothèque pour une raison ou une autre sont directement propagées sur les autres l'utilisant, ayant un seul code.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  6. #6
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    ok !

    je me suis donc fait leurrer par le terme "importer" (que je n'ai même pas tenté à vrai dire ).

    Je pensais que le terme "importer" signifiait "copier les fichiers depuis..." puis que AS réalisait des synchros entre les sources.
    Il fallait donc que je lise "importer = lier un projet" -> là je préfère!

    je testerai, merci
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  7. #7
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Citation Envoyé par Hizin Voir le message
    Avec ou sans lien symbolique, c'est le fonctionnement standard d'IntelliJ IDEA/Android Studio.
    En important un projet existant, celui-ci est considéré comme dans ton projet, mais il n'est pas dupliqué, il reste au même endroit en exemplaire unique.
    Heu... bin non

    Je viens de tester, que ce soit via le menu file/import module ou via la structure du projet, ajouter puis importer (même fenêtre d'importation au final)
    -> le code est dupliqué
    -> aucune synchronisation - en tout cas par défaut - n'est appliqué au projet librairie et/ou au projet application
    -> si je modifie une source librairie en étant dans mon appli, je compile je ferme, je rouvre le projet librairie -> source non modifié

    ...

    Alors j'ai peut-être(surement!) loupé une étape mais ça marche pas du tout.

    Donc même s'il existe une solution de synchro via les fichiers gradle, je préfère encore n'avoir physiquement qu'un seul source
    et garder la gestion des liens symboliques. (si je dois modifier le source avec un éditeur externe par exemple...)

    C'est bizarre qu'il n'y ai pas de solution évidente pour une problématique classique somme toute.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  8. #8
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    J'ai déjà importé plusieurs modules, et ceux-ci n'ont jamais été dupliqués. Ils pointaient bien vers l'endroit où ils sont censé être, et une modification impactaient chacun des projets l'utilisant (j'ai d'ailleurs eu des petits soucis à cause de la synchro lors de dépendances dans plusieurs versions ouvertes du projet en même temps).

    J'utilise plutôt IntelliJ IDEA, mais je ne pense pas qu'Android Studio ait changé ce fonctionnement fondamental. Je n'ai jamais tenté la manipulation sous Windows, mais ça m'étonnerait beaucoup que ça change aussi.
    Là, je ne peux pas tester (congés), mais ce n'est pas le fonctionnement que j'ai constaté plusieurs fois. C'est étrange x)
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  9. #9
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Je viens tout juste de réessayer : j'ai un projet ouvert, je clic sur "File" -> "Import Module". Je choisi le module en question. Je le crée à partir de sources déjà existantes ("Create module from existing sources"), j'importe le module, son src et son gen, les bibliothèques (au besoin), je valide l'importation du module.
    Le module se trouve à présent dans mon projet, et pointe vers l'endroit où celui-ci est. Il n'est pas dupliqué et reste unique.

    Je ne saisi pas le pourquoi du comment nous avons deux comportements différents pour la même chose.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  10. #10
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Merci Hizin pour ton test.

    Je pense que j'ai loupé une étape et que j'ai pas fait ce qu'il fallait. Je ré-essaierai dès que j'aurais terminé certains modules car je préférerai être "droit" dans ce début de dév.

    Je viens de me prendre la tête quelques jours sur l'adb qui fonctionnait "mal", j'étais au bord du reformatage complet et finalement c'est un __biiip__ de virus/spyware qui se nommait "adb.exe" qui était lancé en même temps et qui était appelé 3 fois sur 4 à la place du vrai adb.exe. (pour infos c'est coupon downloader) et rien sur le net la dessus. (bon je dérive là )
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  11. #11
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Joli, pas mal.
    Merci de l'info
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  12. #12
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Via l'importation ou l'ajout de nouveau module , pas moyen pour moi de ne pas dupliquer le module.

    J'ai finalement trouvé une solution :

    Imaginons la structure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /dossier
    -/Projet1
    --/module1A
     
    -/PRojet2
    --/module2A
    Si dans mon projet 1 je souhaite utiliser le module "module2A" du projet 2 il faut faire dans settings.gradle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    include ':module2A'
    project(':module2A').projectDir = new File(settingsDir, '../Projet2/module2A')
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Créer et utiliser une librairie avec ressource
    Par La March dans le forum Android
    Réponses: 0
    Dernier message: 24/06/2014, 17h20
  2. Comment créer et utiliser une librairie ?
    Par Baptiste Wicht dans le forum Débuter
    Réponses: 2
    Dernier message: 08/06/2011, 05h40
  3. [Lazarus] Créer et utiliser une librairie .dll ou .so
    Par parhelie dans le forum Lazarus
    Réponses: 2
    Dernier message: 08/08/2010, 15h24
  4. Réponses: 0
    Dernier message: 20/03/2008, 11h09
  5. Créer et utiliser une librairie en VS 6.0
    Par Cemos dans le forum Visual C++
    Réponses: 16
    Dernier message: 26/12/2007, 10h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo