2010-05-16 5 views
7

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

2

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:

  1. fait une copie de l'arbre de votre projet dir vers un emplacement temporaire
  2. Switch la copie du manifeste au nom du nouveau package via un Recherche- et remplacer
  3. 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
  4. Changer votre IS_PAID_APP (ou quoi que) à la valeur opposée (recherche et remplacement dans la copie)
  5. Exécute une construction Ant pour la copie du projet
  6. 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)
  7. 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.

1

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 ...

Questions connexes