2015-10-22 5 views
11

assetsフォルダーからローカルWebサイトを表示するwebviewを使用してAndroidアプリを作成しました。Gradle - productflavor(マルチフォルダ)ごとに盛りだくさん

プロジェクトのスタイルとコンテンツは異なるが、コードバス(ネイティブJavaとHTML/JS)が異なる異種アプリケーションを生成するために、異なる製品味があります。

各フレーバについて、その特定のフレーバの色と調整を含むdiffssファイルを定義します。

私はCSSファイルを作成しますが、私はどこから始めれば見当がつかないのGradleでタスクを作成する必要があることを知っている:

  • どのように私は、特定の風味の資産フォルダのURLを取得できますか?
  • sassを構築するために特別なgradleプラグインを使用することはできますか?「sass」コマンドを実行するタスクを作成する必要がありますか?
  • compassのような別のgradleプラグインを使用すると、どのように各フレーバーに適切なフォルダを設定できますか?プラグインの設定はAndroidプラグインレベルではなくトップレベルにあります。

答えて

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

大きなメモ:「署名されたAPKの生成」を使用すると、何らかの理由でこのビルドタスクが動作しません。 signingConfigsのリリース版でrunボタンを使ってそれらをビルドすると、 'build \ outputs \ apk'のAPKはOKです。 – Roel

関連する問題