2014-04-06 49 views
4

我需要防止gradle導出某個共享庫。「提供」範圍不工作 - android工作室與gradle

我讀過使用提供的範圍應該做的伎倆,但它似乎只適用於較舊的gradle版本。

是否有任何其他方式從構建過程中排除依賴關係,不讓它們進入最終的apk?

+1

什麼確切的依賴關係?他們真的是由Android平臺提供嗎? – agamov

+0

它是一個共享模塊 –

+0

這工作對我來說:https://stackoverflow.com/questions/10405970/how-do-i-define-a-compile-time-only-classpath-in-gradle/24686771#24686771 – aarkay

回答

0

通過使用Android的易gradle這個插件解決thie問題。

看到這裏https://bitbucket.org/hvisser/android-apt/overview

apply plugin: 'com.android.application' 
apply plugin: 'com.neenbedankt.android-apt' 
android { 
    compileSdkVersion 20 
    buildToolsVersion '20.0.0' 
    defaultConfig { 
     applicationId "org.ligboy.test.card.module1" 
     minSdkVersion 14 
     targetSdkVersion 20 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      runProguard false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 
configurations { 
    apt 
} 
dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    apt 'com.android.support:support-v4:21.+' 
    apt 'com.google.code.gson:gson:2.2.+' 
    apt 'com.android.support:cardview-v7:+' 
    apt 'com.android.support:recyclerview-v7:+' 
} 
+0

您不需要'android-apt',實際上,您正在使用'configurations'塊覆蓋'apt'範圍。 – botteaap

3

我已經找到解決方法:https://stackoverflow.com/a/10406184/310760

但對於搖籃2.0它有小的變化:

configurations{ 
    provided 
} 

sourceSets { 
    main { 
     compileClasspath += configurations.provided 
    } 
    test { 
     compileClasspath += configurations.provided 
    } 
} 

sourceSets.main.compileClasspath += configurations.provided 

idea { 
    module{ 
    scopes.PROVIDED.plus += [configurations.provided] // for Gradle 2.0 
    } 
} 
0

與此打了一段時間,發現:

  1. 「provided」是gradle 1.3.0的一部分,但無法正常工作。
  2. 「provided」在gradle 1.5.0中正常工作!

僅供參考:升級到1.5.0後,必須刪除我的build目錄以從.aar中刪除lib文件。