2014-06-26 8 views
11

Jestem bardzo podekscytowany nową możliwością zamawiania obiektów zastępczych w Gradle + Android Build. Znalazłem w dokumentacji Gradle że mogę określić własne zastępcze tak:Android - Najczęstsze symbole zastępcze dla różnych typów kompilacji

productFlavors { 
    free { 
    } 
    pro { 
     manifestPlaceholders = [ activityLabel:"proName" ] 
    } 
} 

Ale chciałbym mieć jeden zastępczy zależy od rodzaju budować, a nie na smak produktów. Kiedy wstawię tę specyfikację zastępczą do ustawień typu kompilacji, nie przyniesie to żadnego efektu. Czy wiesz, jak to osiągnąć? Ponieważ wydaje mi się, że jestem głupi, mam do czynienia z trzema rodzajami kompilacji i trzema smakami. Dzięki

+0

Nie jestem pewien co do twojej sprawy, ale może ten link pomoże? http://stackoverflow.com/questions/10887837/how-to-specify-spring-propertyplaceholderconfig-values-in-gradle-build –

+0

Ponieważ nie dostałem tego do pracy bezpośrednio i nie miałem czasu, aby przetestować wiele na różne sposoby ostatecznie zdecydowałem się skopiować mój Manifest w różnych folderach typu kompilacji i usunąć (prawie) wszystko poza tym, co chciałem zmienić (w moim przypadku był to klucz API Map Google). Użyłem metody "tools: replace", aby upewnić się, że zachowałem to, co chciałem. Nie najlepsze rozwiązanie, ale praca, która zadziałała dla mnie ... – Kasium

+1

Wydaje się, że błąd zostanie naprawiony: https://code.google.com/p/android/issues/detail?can=2&start= 0 & num = 100 & q = & colspec = ID% 20Type% 20Status% 20Owner% 20Podsumowanie% 20Stars & groupby = & sort = & id = 72829 – OriolJ

Odpowiedz

4

Od dzisiaj z wtyczką gradle 0.13.0 już działa.

7

To jest moje rozwiązanie dla różnych smaków produktów:

build.gradle:

productFlavors { 
normal { 
    applicationId "mobi.cwiklinski.urc" 
    buildConfigField "String", "providerAuthority", "\"mobi.cwiklinski.urc.provider\"" 
    resValue "string", "authorities", "mobi.cwiklinski.urc.provider" 
} 
adfree { 
    applicationId "mobi.cwiklinski.urc.adfree" 
    buildConfigField "String", "providerAuthority", "\"mobi.cwiklinski.urc.adfree.provider\"" 
    resValue "string", "authorities", "mobi.cwiklinski.urc.adfree.provider" 
} 

}

AndroidManifest.xml

I to wszystko - w różny smaki produktu otrzymasz inną wartość zasobów.

+0

Cóż, dziękuję za odpowiedź, ale nie ma to nic wspólnego z moim pytaniem. Pytałem, czy mógłbym jakoś wykorzystać to w typach kompilacji, a nie w smakach – Billda

+0

Możesz połączyć te dwie rzeczy - dostaniesz cztery pakiety APK i wybierzesz dwie, które chcesz uzyskać ... –

+0

Nie znałem resValue, jest to naprawdę pomocne i może być użyte zamiast ' manifestPlaceholders', którego nie mogłem zmusić do działania. – tasomaniac