2013-06-14 11 views
12


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

Odpowiedz

7

Rozwiązaniem było dodawania katalogu

values

pod każdym odpowiednim folderze res, a wszystkie ciągi zostały rozpoznane.

+0

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? –

+0

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) –

Powiązane problemy