【问题标题】:Is it possible to remove a class from an imported gradle library?是否可以从导入的 gradle 库中删除一个类?
【发布时间】:2020-02-20 11:35:34
【问题描述】:

我已经搜索并尝试了一天之久,通过 gradle 从导入的库中删除一个类,而没有真正让它工作,这是否可以通过 Android+gradle 实现?如何做到这一点?

例如,如果我包含这样的库:

implementation 'org.bouncycastle:bcpkix-jdk15on:1.64'

如何按名称从中删除一个类?我尝试的最新方法是在 build.gradle 中设置:

android {
  sourceSets.main.java.filter.exclude '**/QTeslaKeyEncodingTests.*'
}

以下也不起作用:

jar {
    sourceSets {
        main {
            java {
                exclude '**/QTeslaKeyEncodingTests.java'
                exclude '**/QTeslaKeyEncodingTests.class'
            }
        }
    }
}

这也没有:

android{
  packagingOptions {        
    exclude 'org.bouncycastle/pqc/crypto/qtesla/QTeslaKeyEncodingTests.class'
  }
}

上下文:为什么我目前需要这个:当你执行“gradlew testDebug”时,项目中的所有测试都会运行,包括那些存在于导入库中的测试。我也不知道这是否是来自 bouncyCastle 的错误,他们将这些测试包含在库中,但这是一个问题,因为许多测试都失败了。

【问题讨论】:

  • 我帮不了你,但我很好奇你为什么要这样做。
  • 因为当你执行 gradlew testDebug 时,项目中的所有测试都会运行,包括那些存在于导入库中的测试。我也不知道这是否是来自 bouncyCastle 的错误,他们将这些测试包含在库中,但这是一个问题,因为许多测试都失败了。
  • 我明白了,谢谢你的解释。我赞成您的问题,希望您有更好的机会让知道如何帮助您的人看到它。
  • @Andy 但仅适用于 java,不适用于 Android,对吧?
  • 是的,我认为该方法应该有效,我仍在等待构建完成,也许这会解决我的具体问题,但这不会以我制定的形式回答问题: )

标签: android gradle android-gradle-plugin bouncycastle


【解决方案1】:

使用notPackage 选项从检测测试(connectedAndroidTest gradle 任务)中排除特定包。 例如:

android {
    defaultConfig {
        testInstrumentationRunnerArguments = ["notPackage": "com.example.somelibrary"]
    }
}

有很多潜在的过滤选项。记录所有这些的官方文档位于 -

https://developer.android.com/reference/androidx/test/runner/AndroidJUnitRunner

【讨论】:

  • 有趣,我们的项目有多个包,你能添加多个包吗?
  • 为您编辑。希望这会有所帮助!
【解决方案2】:

使用此代码从测试目标中排除文件,因为您有兴趣在运行测试时排除文件。

sourceSets {

     androidTest {
         java {
             exclude '**/QTeslaKeyEncodingTests.java'
             exclude '**/QTeslaKeyEncodingTests.class'
        }
     }
  }

【讨论】:

  • 请仔细阅读问题。 @David 提到他已经尝试过这个解决方案,但没有奏效。
  • 我明白了。很抱歉这是我的错
  • 这仅适用于自己的类,但不适用于通过 gradle 的“实现”导入的第三方库中的类。
猜你喜欢
  • 2016-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
相关资源
最近更新 更多