2013-10-01 28 views
5

私が使用しているビルドファイルは以下のとおりです。有料のビルドには広告ライブラリが含まれていないことを達成したいと思います。私は無料の味の広告ライブラリのみを含める。しかし、彼らはすべてのビルドに存在しています。有料の広告ビルドから広告ライブラリを除外する方法は?

広告ライブラリ無料の有料版を入手するためにビルドファイルを変更するにはどうすればよいですか?

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'com.android.tools.build:gradle:0.5.+' 
    } 
} 

tasks.withType(Compile) { 
    options.encoding = "UTF-8" 
} 

apply plugin: 'android' 

repositories { 
    mavenCentral() 
    mavenLocal() 
} 

dependencies { 
    compile fileTree(dir: 'src/main/libs', include: '*.jar') 
    compile 'com.android.support:support-v4:18.0.+' 
    compile 'com.android.support:appcompat-v7:18.0.+' 
} 

android { 
    compileSdkVersion 18 

    buildToolsVersion "18.0.1" 

    defaultConfig { 
     versionCode 25 
     versionName "1.9.1" 
     minSdkVersion 9 
     targetSdkVersion 18 
     packageName 'com.example.myproject' 
    } 

    signingConfigs { 
     debug { 
      storeFile file("your path") 
     } 

     release { 
      storeFile file("your path") 
      storePassword "" 
      keyAlias "" 
      keyPassword "" 
     } 
    } 

    buildTypes { 
     debug { 
      packageNameSuffix '.debug' 
      versionNameSuffix '-DEBUG' 
      signingConfig signingConfigs.debug 
     } 
     release { 
      signingConfig signingConfigs.release 
     } 
    } 

    sourceSets { 
     main { 
      manifest.srcFile 'src/main/AndroidManifest.xml' 
      java.srcDirs = ['src/main/java'] 
      res.srcDirs = ['src/main/res'] 
      assets.srcDirs = ['src/main/assets'] 
     } 
    } 

    flavorGroups 'market', 'version' 

    productFlavors { 
     google { 
      flavorGroup 'market' 
     } 
     amazon { 
      flavorGroup 'market' 
     } 
     slideme { 
      flavorGroup 'market' 
     } 
     free { 
      flavorGroup "version" 
      dependencies { 
       compile fileTree(dir: 'src/free/libs', include: '*.jar') 
      } 
     } 
     paid { 
      flavorGroup "version" 
      packageName = android.defaultConfig.packageName + ".paid" 
     } 
    } 

    android.sourceSets.amazon { 
     assets.srcDirs = ['src/amazon/assets'] 
     res.srcDirs = ['src/amazon/res'] 
     java.srcDirs = ['src/amazon/java'] 
    } 

    android.sourceSets.slideme { 
     assets.srcDirs = ['src/slideme/assets'] 
     res.srcDirs = ['src/slideme/res'] 
     java.srcDirs = ['src/slideme/java'] 
    } 

    android.sourceSets.free { 
     manifest.srcFile 'src/free/AndroidManifest.xml' 
     assets.srcDirs = ['src/free/assets'] 
     res.srcDirs = ['src/free/res'] 
     java.srcDirs = ['src/free/java'] 
    } 

    android.sourceSets.paid { 
     assets.srcDirs = ['src/paid/assets'] 
     res.srcDirs = ['src/paid/res'] 
     java.srcDirs = ['src/paid/java'] 
    } 
} 

答えて

8

私はいくつかの研究の後、私が望むものを達成したと思います。このhttps://stackoverflow.com/a/17246390/1463357の助けとこのhttps://stackoverflow.com/a/18213259/1463357ポスト私はgradle.buildファイルを修正することができました。

オリジナルのビルドファイルには2つの問題がありました。最初の問題は間違って定義された依存性のフレーバーでした。依存関係はproductFlavors後を定義しなければなりません、そして、彼らはこのようにflavorNameCompileで定義する必要があります。

productFlavors { 
    free { 
    } 
} 

dependencies { 
    compile fileTree(dir: 'src/main/libs', include: '*.jar') 
    freeCompile fileTree(dir: 'src/free/libs', include: '*.jar') 
} 

第二の問題は、間違っsourceSets定義にありました。フレーバのソースセットを正しく定義するには、ソースセットの前にフレーバを定義する必要があります。

これらの変更を適用した後、異なるフレーバーのapkサイズは予想通り異なり、広告ライブラリの痕跡は見つかりませんでした。ここで

は私の最後のgradle.buildファイルです:

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'com.android.tools.build:gradle:0.6.+' 
    } 
} 

apply plugin: 'android' 

repositories { 
    mavenCentral() 
    mavenLocal() 
} 

android { 
    compileSdkVersion 18 

    buildToolsVersion "18.0.1" 

    defaultConfig { 
     versionCode 26 
     versionName "2.0" 
     minSdkVersion 9 
     targetSdkVersion 18 
     packageName 'com.example.myproject' 
    } 

    signingConfigs { 
     debug { 
      storeFile file("your path") 
     } 

     release { 
      storeFile file("your path") 
      storePassword "" 
      keyAlias "" 
      keyPassword "" 
     } 
    } 

    buildTypes { 
     debug { 
      packageNameSuffix '.debug' 
      versionNameSuffix '-DEBUG' 
      signingConfig signingConfigs.debug 
     } 
     release { 
      signingConfig signingConfigs.release 
     } 
    } 

    flavorGroups 'market', 'version' 

    productFlavors { 
     google { 
      flavorGroup 'market' 
     } 
     amazon { 
      flavorGroup 'market' 
     } 
     slideme { 
      flavorGroup 'market' 
     } 
     free { 
      flavorGroup "version" 
     } 
     paid { 
      flavorGroup "version" 
      packageName = android.defaultConfig.packageName + ".paid" 
     } 
    } 

    sourceSets { 
     main { 
      manifest.srcFile 'src/main/AndroidManifest.xml' 
      java.srcDirs = ['src/main/java'] 
      res.srcDirs = ['src/main/res'] 
      assets.srcDirs = ['src/main/assets'] 
     } 
     amazon { 
      assets.srcDirs = ['src/amazon/assets'] 
      res.srcDirs = ['src/amazon/res'] 
      java.srcDirs = ['src/amazon/java'] 
     } 
     slideme { 
      assets.srcDirs = ['src/slideme/assets'] 
      res.srcDirs = ['src/slideme/res'] 
      java.srcDirs = ['src/slideme/java'] 
     } 
     free { 
      manifest.srcFile 'src/free/AndroidManifest.xml' 
      assets.srcDirs = ['src/free/assets'] 
      res.srcDirs = ['src/free/res'] 
      java.srcDirs = ['src/free/java'] 
     } 
     paid { 
      assets.srcDirs = ['src/paid/assets'] 
      res.srcDirs = ['src/paid/res'] 
      java.srcDirs = ['src/paid/java'] 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'src/main/libs', include: '*.jar') 
    compile 'com.android.support:support-v4:18.0.+' 
    compile 'com.android.support:appcompat-v7:18.0.+' 
    freeCompile fileTree(dir: 'src/free/libs', include: '*.jar') 
} 
+0

こんにちは、私たちはそれを行うことができ、特定の味に使用分のAndroid APIレベルに基づいて、いくつかのライブラリのコンパイル行を追加したい場合は、同様の方法で? – beginner

関連する問題