Mam aplikację na Androida i chciałbym mieć różne smaki. W szczególności chciałbym mieć 2 smaki i dla każdego smaku użyć różnych ciągów znaków (inny plik strings.xml
) i być może niektóre ikony są inne.Używaj różnych zasobów dla różnych smaków aplikacji, używając gradle
Próbowałem tworząc dwa foldery w folderze głównym projektu: flav1
i flav2
i stosuje się następującą build.gradle
android {
compileSdkVersion "Google Inc.:Google APIs:15"
buildToolsVersion "17.0.0"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
}
productFlavors {
flav1 {
packageName "com.ic.flav1"
}
flav2 {
packageName "com.ic.flav2"
}
}
android.sourceSets.flav2 {
res {
srcDir 'flav2'
}
resources {
srcDir 'flav2'
}
}
android.sourceSets.flav1 {
res {
srcDir 'flav1'
}
resources {
srcDir 'flav1'
}
}
}
Wynikiem tego jest, że żaden z ciągów jest rozpoznawana, coraz kilka błędów w następujący wpisz:
build FAILED :
error: Error: No resource found that matches the given name (at 'contentDescription' with value '@string/txt_addr').
Czy czegoś brakuje? Jak powinien wyglądać build.gradle?
Dzięki
jaka jest różnica między "res" a "zasobami"? Jestem AS nowicjuszem pochodzącym z zaćmienia ... widzę folder w moim projekcie, ale nie jestem pewien, co robi i jak skorzystasz z oddzielnych "zasobów" dla każdego smaku? –
Res i zasoby to to samo. Jest to tylko konwencja nazewnictwa, z której korzysta AS ("res"). Posiadanie różnych zasobów dla każdego smaku dałoby np. Możliwość wyświetlania różnych obrazów dla tego samego identyfikatora zasobu (np. R.id.logo może być innym obrazem w różnych smakach) –