【问题标题】:"provided" scope not working - android studio with gradle“提供”范围不起作用 - 带有 gradle 的 android studio
【发布时间】:2014-05-18 11:13:18
【问题描述】:

我需要阻止 gradle 导出某个共享库。

我已经读到使用提供的范围应该可以解决问题,但它似乎只适用于较旧的 gradle 版本。

有没有其他方法可以从构建过程中排除依赖项,以免它们进入最终的 apk?

【问题讨论】:

  • 确切的依赖关系是什么?真的是Android平台提供的吗?
  • 现在我有一个新项目,它似乎可以完美运行,至少对于我正在使用的 android 支持库而言

标签: android android-studio gradle dependencies


【解决方案1】:

我在这里找到了解决方案:https://stackoverflow.com/a/10406184/310760

但对于 Gradle 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
  }
}

【讨论】:

    【解决方案2】:

    我有同样的问题,我找到了一些解决方案。但我不明白。

    http://www.sinking.in/blog/provided-scope-in-gradle/

    【讨论】:

    • 我已经通过手动从 apk 文件中删除库解决了我的问题。显然不是最好的解决方案,但它适用于我的情况
    【解决方案3】:

    使用 android-apt gradle 插件解决了这个问题。

    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:+'
    }
    

    【讨论】:

    • 你不需要android-apt,事实上,你在这里使用configurations块覆盖了apt范围。
    【解决方案4】:

    为此奋斗了一段时间,发现:

    1. “provided”是 gradle 1.3.0 的一部分,但不能正常工作。
    2. “provided”在 gradle 1.5.0 中正常工作!

    仅供参考:升级到 1.5.0 后,我必须删除构建目录才能从 .aar 中删除 lib 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-14
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      • 2015-10-12
      相关资源
      最近更新 更多