2015-10-22 18 views
11

Bir web uygulaması ile bir varlıklar klasöründen yerel bir web sitesi gösteren bir Android uygulaması oluşturduk.Gradle - ürün başına sass yapı (çok dosya)

Proje, farklı stillere ve içeriğe sahip ancak aynı codebas'la (yerel Java ve HTML/JS) farklı uygulamalar oluşturmak için farklı Ürün Lezzetlerine sahiptir.

Her çeşnide, farklı bir lezzet için renk ve ince ayarlarla farklı bir sass dosyası tanımlamak istiyoruz.

nereden başlayacağımı ben CSS dosyaları oluşturur gradle bir görev oluşturmak gerektiğini biliyorum ama hiçbir fikrim yok:

  • nasıl belirli bir lezzet varlıkları klasörünün url alabilirim?
  • Sass oluşturmak için özel bir engel eklentisi kullanabilir miyim, yoksa "sass" komutunu çalıştıran bir görev oluşturmalı mıyım?
  • Pusula gibi başka bir dize eklentisi kullandığımda, her bir aroma için doğru klasörleri nasıl yapılandırabilirim? Eklenti ayarları en üst düzeyde ve Android eklenti düzeyinde değil.

cevap

4

Nihai çözümüm var!

(değil uygulamanızın) ana klasörde build.gradle Bu ekleyin:

apply plugin: 'com.android.application' 
apply plugin: 'com.github.robfletcher.compass' 

android { 

[..] 

    android.applicationVariants.all { variant -> 
     for (output in variant.outputs) { 
      def assetsDir = output.packageApplication.assets; 
      tasks["merge${variant.name.capitalize()}Assets"].doLast() { 
       println "Assets folder: " + assetsDir 

       def _ccsDir = file("$assetsDir/css") 
       def _sassDir = file("$assetsDir/sass") 
       def _imagesDir = file("$assetsDir/images") 
       def _javascriptsDir = file("$assetsDir/js") 
       def _fontsDir = file("$assetsDir/fonts") 

       project.compass { 
        cssDir = _ccsDir 
        sassDir = _sassDir 
        imagesDir = _imagesDir 
        javascriptsDir = _javascriptsDir 
        fontsDir = _fontsDir 
       } 
       //compileSass 
       project.compassCompile.execute() 
      } 
     } 
    } 
} 

ben hiç düşünmemiştim:

buildscript { 
    repositories { 
     jcenter() 
     mavenCentral() 
     maven { url 'http://dl.bintray.com/robfletcher/gradle-plugins' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.3.0' 
     classpath 'com.github.robfletcher:compass-gradle-plugin:2.0.6' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

uygulama modülünün bu build.gradle ekle işe yarayacak ama işe yarıyor!

+2

Şerefe .Yukarıda ilerleyin –

+1

Büyük bir not: "İmzalı APK oluştur" seçeneğini kullandığınızda, bu yapı görevi bir nedenle çalışmıyor. SigningConfigs ile bir sürüm varyantında çalıştırma düğmesi ile oluşturduğumda: 'build \ outputs \ apk' içindeki APK tamam. – Roel