Bonjour je suis un développeur android débutant en utilisant windows et l'eclipse IDE pour développer des applications android java.J'ai publié un jeu mais il y a une version gratuite du jeu et une version payante . Le marché google insiste sur le fait que les différentes versions doivent avoir des noms de paquets différents. Jusqu'à présent, j'ai refacturé le paquet avec 2 noms différents et en changeant l'importation du fichier de ressources R chaque fois que je construis les différentes versions. Le code est le même à 99% pour les deux versions. Y a-t-il un meilleur moyen?Android & Eclipse 2 versions différentes de la même application
Répondre
Vous avez plusieurs discussions sur ce sujet here et there, mais fondamentalement la solution est semblable à la duplication du projet.
Par exemple (non basé sur Eclipse):
Il est difficile de répondre à cette question, puisque nous ne savons pas quelle est la différence entre les versions libres et non-libres de votre application. Je vais supposer que les différences pourraient être traitées par une sorte de drapeau global libre/non-libre. Par cela, je veux dire que le même code compenserait les deux versions de l'application, et quelles parties sont activées ou utilisé dépendrait de certains membres de données statiques publiques quelque part:
if (SomeClass.IS_PAID_APP) {
// add more stuff to menu, etc.
}
Si vous le pouvez organisez votre application de cette façon, alors vous n'avez besoin que d'une base de code. Faites-le configurer pour créer votre application dans un sens (gratuit ou payant, au choix) et avec le package approprié dans votre manifeste pour cette version de l'application.
Ensuite, ajoutez une tâche Ant qui effectue les opérations suivantes:
- fait une copie de l'arbre de votre projet dir vers un emplacement temporaire
- Switch la copie du manifeste au nom du nouveau package via un Recherche- et remplacer
- Passer toutes les déclarations d'importation pour votre ancienne édition de paquet de R à le nouveau package, à nouveau via la recherche et de remplacement, et encore une fois sur la copie, pas votre original
- Changer votre IS_PAID_APP (ou quoi que) à la valeur opposée (recherche et remplacement dans la copie)
- Exécute une construction Ant pour la copie du projet
- Copie les fichiers binaires de qui construisent dans le répertoire principal du bac de projet/ sous un nom distinct (il n » t cLOBBER votre autre copie de l'APK)
- Supprime la copie de l'arbre fait à l'étape 1
Si Java avait un pré-processeur, ce serait un peu plus simple. Cependant, la technique de base que je décris ci-dessus a été utilisée pendant quelques décennies maintenant. C'est maladroit, mais cela fonctionne, et cela signifie que vous n'avez qu'un seul jeu de code source à gérer. Notez que la tâche Ant
<replace>
gérerait bien vos recherches et remplacements.
Ceci est l'un des défauts de Android Market, mais je peux voir pourquoi ils l'ont fait de cette façon.Il n'a tout simplement pas été conçu pour avoir des versions gratuites et payantes de votre application (ils prétendent que la politique de retour 24 heures est ce qu'elle est, mais plutôt utilisée pour le piratage) -:
Quoi qu'il en soit, la chose la plus simple à faire est d'écrire un script de génération Ant (ou quel que soit le langage de script utilisé). Faites une recherche remplacer votre nom de paquet à travers tous les fichiers .xml et .java. Ensuite, faites la construction de votre application là-bas. Refactoriser votre code est plus de douleur que ça vaut la peine IMHO ...
- 1. Création de 2 versions différentes du même assemblage
- 2. Chargement de différentes versions du même assemblage
- 3. Application pour différentes versions et différentes résolutions
- 4. Présentation dynamique de différentes versions d'une application
- 5. Référence à 2 versions différentes de log4net dans la même solution
- 6. Eclipse: Créer et se conformer à différentes versions de JRE
- 7. Conversion de types identiques de différentes versions du même assemblage
- 8. Oracle: Utiliser deux versions différentes d'EXP sur la même machine?
- 9. jQuery: exécution de 2 versions de jQuery différentes sur le même site Web?
- 10. Chargement de 2 versions du même plugin avec Silverlight/MEF
- 11. Exécution Différentes versions de Unity
- 12. Comment travailler avec différentes versions de rails en même temps?
- 13. Les différentes versions de support Android et XPath
- 14. Conflits trouvés entre différentes versions du même assembly dépendant Web Application VS2010?
- 15. Versions iPhone et iPad de la même application?
- 16. Utilisation de différentes versions de DLL dans une application
- 17. Création de différentes versions de construction d'une application Java
- 18. C# Application de la même fonction à différentes variables
- 19. Synchronisation de différentes versions d'objets
- 20. Différentes versions de bibliothèques C++
- 21. Conflits trouvés entre les différentes versions du même assemblage dépendant
- 22. Afficher la même icône en 2 tailles différentes sur C#
- 23. Deux versions de la même application asp.net utilisant le même serveur que stateserver - bad?
- 24. Cela vaut-il la peine de tester la même version d'IE sur différentes versions de Windows?
- 25. EJB2 sur différentes versions de JBoss
- 26. Maintenance de deux versions du même framework et de la même application
- 27. comment mieux faire face à différentes versions d'Android?
- 28. différences entre cellules différentes entre les différentes versions de IE
- 29. Est-il possible de charger plusieurs versions différentes de jQuery sur la même page?
- 30. Utilisation de 2 noms d'hôte pour la même application .NET