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 Discussion :

Librairie et lien vers une ressource d'un projet


Sujet :

Android

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Librairie et lien vers une ressource d'un projet
    Bonjour,

    Je développe une librairie sous Android, afin de pouvoir redistribuer le .jar de celle-ci à divers clients afin qu'ils importent dans leur propre projet, sans pour autant voir le code source de la librairie.

    Jusque là tout va bien, aucun soucis d'utilisation du .jar dans un projet.

    En revanche ce dont j'ai besoin, c'est de permettre à ces clients de configurer quelques informations au sujet de la librairie. Par exemple, le premier client devra utiliser un loginA, un autre client un loginB, etc…
    J'avais donc pour idée de faire un peu à la Google Analytics, c'est de créer un fichier "libconfig.xml" que devra mettre chaque client dans le res/values/ de leur projet, et lire les informations clés/valeurs à partir de ma librairie.

    Cela fonctionne dans le sens ou dans le code de la librairie, je vais bien chercher le R.string.login par exemple qui se trouve dans le "libconfig.xml" du client. MAIS, cela me force à importer dans le code de la librairie, le chemin du package du projet du client. Par exemple le client A a son package nommé "com.clientA.app", le client B a son package "com.clientB.app", etc… Donc au moment de l'import, je suis obligé d'aller chercher le chemin du fichier en fonction du package du client.

    Cela me force donc pour chaque client, à importer le R (resources) de chaque client dans le code de ma librairie, ce que je veux a tout pris éviter, car selon le nombre de clients etc, je ne connaitrais pas leur package, et le but est juste de leur faciliter la tâche et que ma librairie soit générique.

    Google analytics V2 impose d'utiliser justement un fichier "analytics.xml" dans le res/values, afin de lire les informations du tracker etc, ce que doit faire leur .jar. Je voudrais faire la même, car quelque soit le projet que j'utilise, pas besoin de connaitre le package utilisé de l'application.

    Comment faire donc pour être générique dans la librairie afin de pouvoir lire les informations de ce fichier, quelque soit le package du client ?

    En gros faire exactement pareil que Google Analytics :
    https://developers.google.com/analyt...on/android/v2/

    Merci beaucoup d'avance

  2. #2
    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
    Crée un répertoire "config" au même niveau que res, libs... et crée dedans ton fichier "maconfig.xml".

    En fixant une nomenclature pour les noms, tu y auras accès.
    Par contre, je ne comprends pas très bien ton histoire de jar... Sous Android, les bibliothèques sont aussi des apk. Ton IDE devrait te demander, à la création du projet, si c'est une application, un test ou une bibliothèque.
    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

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Salut Hizin,

    Merci pour ta réponse.
    J'ai crée le dossier à la racine au même niveau que res, libs, et mis mon fichier xml dedans, avec comme convenu par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="utf-8" ?>
     
    <resources xmlns:tools="http://schemas.android.com/tools" >
     
      <string name="monlogin">demo</string>
     
    </resources>
    Mais je n'arrive pas à y accéder avec le R. Pourrais-tu me dire de quelle manière je peux y accéder ?

    Pour l'histoire du .jar, en fait j'ai mon projet principal, et mon autre projet library (projet marqué comme library) lié à mon projet principal pour justement faire appel à ma librairie. Ensuite je prend juste le .jar généré de ce projet library pour le mettre dans le dossier libs du projet principal afin de pouvoir utiliser la lib sans voir le code source

  4. #4
    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
    Tu peux y accéder avec R.string... mais ça va faire le même problème qu'à l'origine.

    Bon, un peu a coté de mes pompes pour la réponse précédente, désolé.

    Il y aurait peut-être possibilité d'utiliser quelque chose comme ça int id = ressources.getIdentifier(title, "string", "com.package");...

    Mais non, j'ai mal compris à la base, et je n'ai pas le temps de faire de profondes recherches, encore désolé.
    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

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Tu m'as mis sur la piste et j'ai finalement reussi à le faire fonctionner. Je mets le code pour ceux que ça interesse également :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Resources res = sContext.getResources();
     
    String myValue = res.getString(res.getIdentifier("monlogin", "string", sContext.getApplicationContext().getPackageName()));
    Il faut que je me serve du context, puis je vais chercher grâce à l'astuce du package que tu as donné, la valeur de la clé, en respectant bien entendu le format de celle-ci, et ça fonctionne

    Merci

    Par contre pour le .jar, tu y vois un problème ou bien l'utilisation que je veux en faire est bonne selon toi ?

  6. #6
    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
    Ah ben finalement, j'ai servi à quelque chose.

    Pour le .jar, c'est juste que j'avais vu/lu que les lib' étaient des apk, rien de plus.
    J'ai répondu trop vite la-dessus ^^

    Si c'est résolu, n'oublie pas de cliquer sur le bouton "résolu"
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Frames] un lien vers une page de Frames vers une page sans
    Par jamesleouf dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 23/09/2005, 18h25
  2. [C#] DataGrid qui contient un lien vers une page
    Par Roach dans le forum ASP.NET
    Réponses: 6
    Dernier message: 19/08/2005, 13h54
  3. [FLASH MX] Lien vers une application
    Par mzt.insat dans le forum Flash
    Réponses: 4
    Dernier message: 15/03/2005, 19h18
  4. Lien vers une variable ?
    Par drinkmilk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 22/02/2005, 09h55

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