2016-04-07 3 views
2

Mon équipe travaille avec Git et maintenant nous construisons une application Android. Cette application consomme notre service web, que chaque développeur construit dans son propre ordinateur en cours de développement.Android par variables de développeur

Puisque nous ne pouvons pas utiliser localhost à l'intérieur de l'application (puisqu'il pointe vers le périphérique lui-même), nous devons spécifier l'adresse réseau (par exemple 192.168.1.123), maintenant il est codé en dur. Le problème est que, pour la plupart, nos adresses réseau ne sont pas les mêmes et que chaque développeur doit modifier manuellement l'adresse pour coder. J'essaie de trouver des façons plus intéressantes de faire ce processus. Ma première supposition était que je pourrais faire quelque chose comme config/application.yml de Rails ou comme application.properties de Spring Boot. Ce fichier serait dans .gitignore et, lors de la configuration de son environnement de développement, chaque développeur définirait son adresse réseau dans une variable. Cette approche est intéressante principalement parce que nous pouvons installer ce fichier dans des serveurs CI, puis le déploiement peut être automatisé dans des environnements de production (par exemple en pointant vers my-aplication.com au lieu de l'adresse réseau du développeur).

Une autre façon que j'ai pensé est d'utiliser quelque chose comme my-application.dev et laisser la machine hôte (lors de l'utilisation de l'émulateur) résoudre dans son fichier hosts, en boucle. Il y a deux problèmes principaux dans cette approche: a) nous aimerions conserver les paramètres dans le dossier du projet. b) Lors du déploiement en production, nous devrions l'éditer manuellement.

Donc, il y a un moyen de le faire? En gardant à l'esprit que nous apprécions d'avoir ces paramètres dans le dossier du projet et non dépendant de l'IDE.

Merci d'avance!

Répondre

0

Étape # 1: Définir une propriété gradle.properties, dans la racine du projet répertoire, qui contient l'adresse IP en question, comme:

DEV_SERVER_URL=https://192.168.1.123 

Étape # 2: Dans votre fichier app/build.gradle, exposer cette propriété via buildConfigField, ou éventuellement via resValue, pour le rendre disponible au code Java via BuildConfig ou une ressource de chaîne. Pour un crédit supplémentaire, utilisez la propriété uniquement dans le type de construction debug, en utilisant la valeur de production dans release (pointant vraisemblablement vers le serveur Web de production). Par exemple:

debug { 
     buildConfigField "String", "SERVER_URL", '"'+DEV_SERVER_URL+'"' 
    } 

    release { 
     buildConfigField "String", "SERVER_URL", '"https://prod.this-is-so-fake.com"' 
    } 

Étape # 3: Modifier le code Java pour faire référence au champ BuildConfig ou la ressource de chaîne que vous avez configuré à l'étape 2.

+0

Huh, 1 seconde en retard après la réponse de la légende –

+1

@AntonShkurenko: Mes excuses. Je vais viser à taper ... plus ... lentement ... dans ... le ... futur ... :-) – CommonsWare

0

Définir Properties

def Properties props = new Properties() 
props.load(new FileInputStream(rootProject.file('app/custom.properties'))) 

plus tard:

buildConfigField "String", "CUSTOM_FIELD", '"'+props['customFieldName']+'"' 

Votre custom.properties doit contenir quelque chose comme:

customFieldName=customString