Précédent   Forum des professionnels en informatique > Java > Général Java > Java & Mobiles > Android
Android Forum d'entraide sur Android, la plateforme mobile de Google pour téléphones portables et Smartphones. Avant de poster -> FAQ Android
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/02/2012, 14h37   #1
Invité de passage
 
Homme
Chargé d'affaire
Inscription : février 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Conseil

Informations forums :
Inscription : février 2012
Messages : 4
Points : 0
Points : 0
Par défaut Faire coexister 2 applications "identiques" sur le même terminal

Bonjour,

Je souhaite installer sur un même terminal une application actuellement en prod et la même application à laquelle nous avons apporté des améliorations et qui est encore en phase de dev.
L'idée c'est de tester ces 2 applis sans avoir à installer / désinstaller à chaque fois.
Avez-vous des solutions?

Merci
adyady est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 15h05   #2
Rédacteur/Modérateur
 
Avatar de MrDuChnok
 
Homme
Ingénieur développement logiciels
Inscription : juin 2002
Messages : 1 953
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : juin 2002
Messages : 1 953
Points : 3 474
Points : 3 474
Salut,

Pas de solutions évidentes.
La seule piste serait de changer le nom du package, mais ça parait complexe, risqué, et pas terrible.
__________________
Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum
MrDuChnok est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/02/2012, 15h09   #3
Invité de passage
 
Homme
Chargé d'affaire
Inscription : février 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Conseil

Informations forums :
Inscription : février 2012
Messages : 4
Points : 0
Points : 0
Effectivement c'est pas la solution la plus simple.
Quelqu'un a une autre idée/solution?
adyady est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 15h44   #4
Rédacteur/Modérateur
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 460
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations professionnelles :
Activité : Développeur Java/Web
Secteur : Transports

Informations forums :
Inscription : avril 2002
Messages : 12 460
Points : 19 447
Points : 19 447
Salut,

Citation:
Envoyé par MrDuChnok Voir le message
La seule piste serait de changer le nom du package, mais ça parait complexe, risqué, et pas terrible.
Il est en effet impératif de changer le nom du package du fichier AndroidManifest.xml.



Je suis dans le même cas et c'est ce que j'ai fait.

Il y a toutefois deux problèmes :
  • Cela change le package de toutes les Activity.
  • Cela change le package des ressources (la classe R auto-généré).




Concernant le premier point on peut limiter la casse en précisant le nom complet de la classe dans le fichier manifest.
Il n'y a que pour l'activité principale que cela ne fonctionne pas (elle doit appartenir au package du fichier manifest.

Du coup j'ai crée le package et une activity "bidon" qui hérite de ma vrai activity dans l'autre package.
Par exemple :
Code :
1
2
3
4
5
package com.example.myapps.BETA;
 
public class MyActivity extends com.example.myapps.MyActivity {
    // empty
}





Reste le problème des ressources via R. Pour le moment je l'ai fait "bourrin" et j'ai modifier l'import dans toutes mes classes, mais je pense qu'on doit également pouvoir s'en sortir avec une classe fille de la sorte :
Code :
1
2
3
4
5
package com.example.myapps;
 
public class RR extends com.example.myapps.BETA.R {
    // empty
}
Et en utilisant RR à la place de R. Il suffira ensuite de modifier uniquement ce fichier...

(je n'ai pas encore tester mais cela devrait marcher)


a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/02/2012, 16h35   #5
Invité de passage
 
Homme
Chargé d'affaire
Inscription : février 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Conseil

Informations forums :
Inscription : février 2012
Messages : 4
Points : 0
Points : 0
Nous allons tester de notre côté
Ta proposition a faire naître une autre idée chez nous que nous allons tester également.
A suivre
adyady est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 17h46   #6
Rédacteur/Modérateur
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 460
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations professionnelles :
Activité : Développeur Java/Web
Secteur : Transports

Informations forums :
Inscription : avril 2002
Messages : 12 460
Points : 19 447
Points : 19 447
Citation:
Envoyé par adyady Voir le message
Ta proposition a faire naître une autre idée chez nous que nous allons tester également.
N'hésites pas à poster le résultat : ca m'intéresse aussi


a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 21h44   #7
Rédacteur/Modérateur
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 460
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations professionnelles :
Activité : Développeur Java/Web
Secteur : Transports

Informations forums :
Inscription : avril 2002
Messages : 12 460
Points : 19 447
Points : 19 447
Citation:
Envoyé par adiGuba Voir le message
Reste le problème des ressources via R. Pour le moment je l'ai fait "bourrin" et j'ai modifier l'import dans toutes mes classes, mais je pense qu'on doit également pouvoir s'en sortir avec une classe fille de la sorte :
Code :
1
2
3
4
5
package com.example.myapps;
 
public class RR extends com.example.myapps.BETA.R {
    // empty
}
Et en utilisant RR à la place de R. Il suffira ensuite de modifier uniquement ce fichier...

(je n'ai pas encore tester mais cela devrait marcher)
Je viens de tester et cela ne fonctionne pas : la classe "R" est final et ne peut donc pas être étendus


a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 09h43   #8
Rédacteur/Modérateur
 
Avatar de MrDuChnok
 
Homme
Ingénieur développement logiciels
Inscription : juin 2002
Messages : 1 953
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : juin 2002
Messages : 1 953
Points : 3 474
Points : 3 474
Et en jouant avec les mécanismes de librairies, ça ne serait pas possible ?
Genre toute l'application est une librairie, qu'on utilise dans deux projets (avec des packages différents).
Seulement ses deux projets sont presque vide...
__________________
Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum
MrDuChnok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 10h23   #9
Rédacteur/Modérateur
 
Avatar de adiGuba
 
Homme
Développeur Java/Web
Inscription : avril 2002
Messages : 12 460
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations professionnelles :
Activité : Développeur Java/Web
Secteur : Transports

Informations forums :
Inscription : avril 2002
Messages : 12 460
Points : 19 447
Points : 19 447
Ca pourrait le faire en effet : http://developer.android.com/guide/d...s-eclipse.html


Je testerais ca dès que j'aurais un peu de temps


a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java Présentation de Java SE 7 (commentaires)
adiGuba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 20h35   #10
Invité de passage
 
Homme
Chargé d'affaire
Inscription : février 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Conseil

Informations forums :
Inscription : février 2012
Messages : 4
Points : 0
Points : 0
Par défaut voici ce que nous sommes parvenu à faire

Voici la marche à suivre*:
Compiler et produire l’application avec le code source original pour obtenir l’APK d’origine avec comme nom de package com.application.name
Convertir le projet Eclipse de l’application pour qu’elle soit reconnue comme une librairie*:
Dans la fenêtre Package Explorer, faire un clic-droit le projet à convertir et sélectionner Properties.
Dans la fenêtre Properties, sélectionner le groupe Android dans le panneau de gauche.
Dans la section Library, cocher la case is Library et cliquer sur Apply.
Cliquer sur OK pour fermer la fenêtre de Properties.
Créer un projet cible Android identique au projet original avec comme nom de package dev.com.application.name et en générant l’Activity principale.
Ajouter la dépendance avec la librairie du projet original*:
Dans la fenêtre Package Explorer, faire un clic-droit le projet à convertir et sélectionner Properties.
Dans la fenêtre Properties, sélectionner le groupe Android dans le panneau de gauche.
Dans la section Library, cliquer sur le bouton Add et sélectionner le projet de la librairie originale.
Cliquer sur OK pour fermer la fenêtre de Properties.
Copier l’AndroidManifest du projet original dans le projet cible et modifier les noms des Activity déclarés en indiquant le nom de package complet.
Faire une sauvegarde de l’AndroidManifest original et supprimer les données de permission (sinon elles sont en conflit avec les permissions du projet cible).
Supprimer le fichier main.xml du répertoire layout cible (le répertoire doit être vide pour éviter les doublons).
Modifier l’Activity principale cible pour qu’elle étende l’Activity principale originale car pour unique méthode*:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
Déclarer l’Activity principale cible comme point d’entrée de l’application cible.
Compiler et produire l’application cible pour obtenir l’APK d’origine avec comme nom de package dev.com.application.name
Les deux applications peuvent ainsi être installées sur un même device.
Pour rétablir le projet original dans sa configuration de départ il suffit de remplacer l’AndroidManifest par sa copie de sauvegarde et d’enlever la propriété is Library du projet original.
adyady est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h27.


 
 
 
 
Partenaires

Hébergement Web