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 :

Comment utiliser une API dans une application Android


Sujet :

Android

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 24
    Points
    24
    Par défaut Comment utiliser une API dans une application Android
    Bonjour,

    je sollicite votre aide car je voudrais utiliser une application Android (que j'ai créé) dans une autre application, typiquement sur le clic d'un Bouton.

    Là où j'en suis :

    J'ai créé mon application (mapremiereappli), elle fonctionne très bien. J'ai coché la case "IsLibrary" pour qu'un .jar contenant mes classes soit généré.

    J'ai créé une deuxième application (usingmapremiereappli), contenant uniquement un bouton permettant de lancer la première application. J'ai ajouté le .jar (Clic droit, Properties, Java build Path, Add external JARs)

    Comme le .jar généré précédemment ne contient pas les ressources de ma première application, je les ai ajouté à la main dans la deuxième en prenant soin d'avoir préfixer chaque ressource au préalable pour éviter les conflits.

    De quelle façon puis je appeler ma première application depuis la deuxième ?

    J'ai testé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private OnClickListener OnClickListenerLaunch = new OnClickListener() {
    		@Override
    		public void onClick(View v) 
    		{
    			Intent i = new Intent(LaunchActivity.this.getApplicationContext(), com.lamarch.mapremiereappli.activity.MainActivity.class);
    			startActivity(i);
    		}
    	};
    Ca compile sans problème. Mais j'ai le droit à ceci lors du clic sur le bouton :

    06-16 12:34:34.272: E/AndroidRuntime(10298): FATAL EXCEPTION: main
    06-16 12:34:34.272: E/AndroidRuntime(10298): Process: com.lamarch.usingmapremiereappli, PID: 10298
    06-16 12:34:34.272: E/AndroidRuntime(10298): java.lang.NoClassDefFoundError: com.lamarch.mapremiereappli.activity.MainActivity

    Je précise que j'ai déclaré com.lamarch.mapremiereappli.activity.MainActivity dans le Manifest et que cela n'a rien changé.

    J'ai beaucoup de mal à trouver de la documentation sur le sujet. Quelqu'un de plus expérimenté peut il m'orienter svp ? Sachant que je m'y prend peut être de la mauvaise manière depuis le début je ne sais pas.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    J'ai du mal à croire que personne ici n'ait essayé d'appeler une librairie avec ressource dans une autre application.

    Il y a forcément quelqu'un qui s'est retrouvé confronter à la même situation que moi.

  3. #3
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    Salut,
    Je ne suis pas certain, mais je dirais qu'il faut que tu ajoutes ta librairie dans "Clic droit -> Properties -> Android", dans l'onglet library, tu as un bouton ADD ou tu devrais pouvoir l'ajouter.
    "Quand la lune n'est pas là, la nuit mène une existence obscure"

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    Salut, merci d'avoir pris le temps de me répondre.

    C'est ce que j'ai fait.

    Le problème étant, au final, d'accéder aux ressources de ma librairie, car même en les incluant dans le nouveau projet, le pointeur de la class R du projet principal n'est plus le bon quand je m'en sers dans ma librairie.

    En gros les "R.id.btn_example" ne renvoie pas le bon pointeur.

    Tu as déjà essayé d'utiliser une librairie utilisant des ressources, dans un autre projet ?

  5. #5
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    Est ce que tu utilises bien le R de ton API ? com.monapi.R ?
    "Quand la lune n'est pas là, la nuit mène une existence obscure"

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    Amusant que tu me suggères de spécifier dans l'API d'utiliser le R de l'API puisque je venais justement de tester cette solution et ça marche parfaitement. Enfin !

    Cependant (oui sinon ce serait trop facile ^^), le code de mon API peut être vu par mon client et ça ne m'arrange pas du tout. Je sais que pour ce qui est des ressources, c'est impossible à obfusquer. Mais pour les sources, je sais qu'il est possible ( mais le raisonnement ne va pas jusqu'au bout donc je cherche encore comment : de transformer mes sources en .jar et de m'en servir de la même manière.

    Je pense que je me rapproche de la solution finale. Une idée ? (je me reprends des NullPointerException sur mes Buttons etc. quand je tente en .jar avec la méthode )

    EDIT : Je précise que j'ai spécifié dans mon API uniquement le R des layout/menus. Mais pas des Buttons etc.

  7. #7
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    Tu as regardé du coté de proguard pour obfusquer le code ?
    Il me semble que ca obfusque aussi les library jointes.

    ->Lien proguard
    "Quand la lune n'est pas là, la nuit mène une existence obscure"

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 35
    Points : 24
    Points
    24
    Par défaut
    Je connais de nom, je vais regarder ça merci du conseil.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/06/2015, 17h52
  2. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  3. comment utiliser un programme comme une fonction dans une macro exel
    Par ERICKO dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/10/2007, 23h39
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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