2013-03-06 9 views
7

Chciałbym móc tworzyć i instalować wiele wersji mojej aplikacji (jednocześnie), kierując reklamy na różne środowiska, takie jak programowanie, wdrażanie i oczywiście produkcja.Różne konstrukcje Androida dla różnych środowisk

Nazwa paczki w numerze AndroidManifest.xml wydaje się być główną przeszkodą, ponieważ jest to jednoznacznie identyfikująca aplikację. Pomyślałem, że będzie można po prostu przełączać się między com.mydomain.prod, com.mydomain.staging i com.mydomain.dev lub jakąś podobną konwencję, ale do tej pory nie miałem szczęścia wymyślanie struktury pakietów, która działa na to podejście.

Jaką strategię mogę zastosować, aby uzyskać jak najmniej bólu?

+0

Pole pakietu w AndroidManif est.xml to po prostu unikalny identyfikator używany przez Google Play i nie musi być taki sam jak struktura pakietu źródłowego java. – yorkw

+0

To nie może być prawda, prawda? Jeśli to zmienię, folder genów się zmieni i dostanę tonę błędów "R nie da się rozwiązać na podstawie zmiennej". Czy istnieje sposób, aby tego uniknąć? –

+0

Dokumenty: nazwa pakietu służy jako unikalny identyfikator aplikacji. Jest to również domyślna nazwa dla procesu aplikacji (patrz atrybut procesu procesu elementu ) i domyślne powinowactwo zadania do działania (patrz atrybut taskAffinity elementu elementu). –

Odpowiedz

0

Proponuję użyć narzędzia do budowania "ant" specyfikującego zadanie "regexp", które może być użyte w celu zastąpienia tekstu w niektórych plikach (np. Zamień nazwę pakietu aplikacji w pliku manifestu zgodnie z właściwym celem kompilacji) . Możesz także zdefiniować plik właściwości differnet dla każdego celu kompilacji (np. "Build_development.properties", aby przechowywać wszystkie parametry istotne dla budowania twojego produktu dla środowiska programistycznego.) ... mam nadzieję, że to jest pomocne ..

4

Z Gradle można określić różne "smaki" twojej aplikacji. Odbywa się to w swojej build.gradle:

android { 
    // … 

    defaultConfig { 
     // … 
    } 

    productFlavors { 
     prod 
      applicationId "com.mydomain.prod" 
     } 

     staging { 
      applicationId "com.mydomain.staging" 
     } 

     dev { 
      applicationId "com.mydomain.dev" 
      versionCode 2 
     } 
    } 
} 

Każdy właściwości smakowe są dziedziczone od defaultConfig.

Teraz w katalogu aplikacji src można tworzyć katalogi z/kod środków smakowych specyficzne w nim:

app/ 
|-- src/ 
    |-- main/ 
    |-- prod/ 
    |-- staging/ 
    |-- dev/ 

Te linki mogą być przydatne: