2015-10-22 12 views
11

हमने एक वेबव्यू के साथ एक एंड्रॉइड ऐप बनाया जो संपत्ति फ़ोल्डर से स्थानीय वेबसाइट दिखाता है।ग्रैडल - उत्पाद प्रति उत्पाद (बहु फ़ोल्डर)

इस परियोजना में अलग-अलग शैलियों और सामग्री के साथ अलग-अलग ऐप्स उत्पन्न करने के लिए अलग-अलग उत्पाद स्वाद हैं, लेकिन एक ही कोडेबा (मूल जावा और HTML/JS) के साथ।

प्रत्येक स्वाद के लिए हम उस विशिष्ट स्वाद के लिए रंगों और tweaks के साथ एक diffent sass फ़ाइल को परिभाषित करना चाहते हैं।

मैं जानता हूँ कि मैं Gradle जो बनाता सीएसएस फ़ाइलों में एक कार्य भी बनाना होगा, लेकिन मैं पता नहीं है जहां शुरू करने के लिए:

  • मैं एक विशिष्ट स्वाद की संपत्ति फ़ोल्डर का यूआरएल कैसे मिलता है?
  • क्या मैं सास बनाने के लिए एक विशेष ग्रेडल प्लगइन का उपयोग कर सकता हूं या क्या मुझे "sass" कमांड निष्पादित करने वाला कार्य बनाना है?
  • जब मैं कंपास की तरह एक और ग्रेडल प्लगइन का उपयोग करता हूं, तो मैं प्रत्येक स्वाद के लिए सही फ़ोल्डर कैसे कॉन्फ़िगर कर सकता हूं? प्लगइन सेटिंग्स शीर्ष स्तर पर हैं और एंड्रॉइड प्लगइन स्तर में नहीं।

उत्तर

4

मैं फिनली में समाधान है!

मुख्य फ़ोल्डर में अपने build.gradle को यह जोड़े (आपके ऐप्लिकेशन के नहीं):

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() 
      } 
     } 
    } 
} 

मैंने कभी नहीं सोचा:

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() 
    } 
} 

एप्लिकेशन मॉड्यूल के इस build.gradle जोड़े यह काम करेगा लेकिन यह काम करता है!

+2

चीयर्स। आगे बढ़ें –

+1

एक बड़ा नोट: जब आप "हस्ताक्षरित एपीके जेनरेट करें .." का उपयोग करते हैं, तो यह बिल्ड कार्य किसी कारण से काम नहीं कर रहा है। जब मैं उन्हें कॉन्फ़िगर के साथ रिलीज़ संस्करण में रन बटन के साथ बना देता हूं: 'बिल्ड \ outputs \ apk' में एपीके ठीक है। – Roel

संबंधित मुद्दे