2013-06-14 43 views
12


Tôi có ứng dụng Android và tôi muốn có các hương vị khác nhau. Cụ thể, tôi muốn có 2 hương vị và cho mỗi hương vị sử dụng các chuỗi khác nhau (khác nhau strings.xml tập tin) và có thể có một số biểu tượng khác nhau.Sử dụng các tài nguyên khác nhau cho các ứng dụng khác nhau bằng cách sử dụng gradle

Tôi đã cố gắng tạo hai thư mục trong thư mục gốc của dự án: flav1flav2 và sử dụng như sau 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' 
     } 
    } 
} 

Kết quả của việc này là không ai trong số các dây được công nhận, nhận được nhiều sai sót trong những cách sau loại:

build FAILED :

error: Error: No resource found that matches the given name (at 'contentDescription' with value '@string/txt_addr').

Tôi có thiếu gì đó không? Làm thế nào nên build.gradle được?

Cảm ơn

Trả lời

7

Giải pháp là để thêm thư mục

values

dưới mỗi thư mục res tương ứng, và tất cả các chuỗi đã được công nhận.

+0

sự khác biệt giữa "res" và "resources" là gì? Tôi là một newbie AS đến từ nhật thực ... tôi thấy các thư mục trong dự án của tôi nhưng tôi không chắc chắn những gì nó làm và làm thế nào bạn sẽ được hưởng lợi từ việc có một "tài nguyên" riêng biệt cho mỗi hương vị? –

+0

Res và tài nguyên là như nhau. Nó chỉ là quy ước đặt tên mà AS sử dụng ("res"). Có các tài nguyên khác nhau cho mỗi hương vị sẽ cung cấp cho bạn cơ hội ví dụ để có các hình ảnh khác nhau cho cùng một id tài nguyên (ví dụ: R.id.logo có thể là một hình ảnh khác nhau về các hương vị khác nhau) –

Các vấn đề liên quan