标签: source-sets

如何向Gradle添加新的源集?

我想在我的Gradle构建(版本1.0)中添加集成测试.它们应该与我的正常测试分开运行,因为它们需要将webapp部署到localhost(它们测试该webapp).测试应该能够使用我的主要源集中定义的类.我该如何实现这一目标?

java integration-testing build gradle source-sets

84
推荐指数
5
解决办法
9万
查看次数

具有自定义源集的Android的Gradle风格 - gradle文件应该是什么样的?

我有一个旧的eclipse项目我已经进入android studio并设置使用flavour.它似乎工作正常,直到我开始尝试在我的口味之间使用不同的java文件.

我的项目设置如下:

ProjectRoot
+- acitonbarsherlock
+- facebook
+- myLib1
+- myProject
   +- src
      +- commonFiles
         +- flavor1
         +- flavor2
   +- res
      +- flavor1
      +- flavor2
Run Code Online (Sandbox Code Playgroud)

myProject gradle文件android闭包的内部看起来像这样:

android {
compileSdkVersion 17
buildToolsVersion "18.0.1"

signingConfigs {
     ...
}

productFlavors {
    flavor2 {
    }
    flavor1 {
    }
}

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

    flavor2 {
        manifest.srcFile 'AndroidManifest-flavor2.xml'
        res.srcDirs = ['res-flavor2', 'res']
        java.srcDirs …
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio source-sets

49
推荐指数
4
解决办法
5万
查看次数

test 和 androidTest 之间共享 srcDirs,升级到 Android Studio Chipmunk 后未解析的引用 (IntelliJ 2021.2.1)

我刚刚从 Bumblebee 升级到 Chipmunk,并且在我的检测 androidTests 中遇到了多个依赖项解析问题。

这些是我的源集的样子:

sourceSets {
    test.java.srcDirs += 'src/testShared/kotlin'
    test.resources.srcDirs += 'src/testShared/resources'
    androidTest.assets.srcDirs += files("$projectDir/schemas".toString())
    androidTest.java.srcDirs += 'src/testShared/kotlin'
    androidTest.resources.srcDirs += 'src/testShared/resources'
}
Run Code Online (Sandbox Code Playgroud)

这个想法是在单元测试和仪器测试之间共享测试数据。请记住,测试可以构建并执行,但依赖项在 IDE 中显示为红色。另外,它可能不相关,但我引用的字符串资源(位于资源模块中)在 IDE 中也是红色的。

另外,当我注释掉指向 testShared 的单元测试源集时,IDE 错误会在我的 AndroidTests 中消失

这在以前版本的 Android Studio 中不是问题。我认为该问题与基本 IntelliJ IDE 平台有关。有谁知道如何解决这个问题,或者有任何解决方法?

编辑:这是一个基本示例项目,在 Chipmunk 及以上版本中运行时演示了该问题。在bumblebee中,androidTest中没有未解决的引用错误。另外,您可能需要调整 AGP 版本,因为我使用 Dolphin beta01 构建了这个项目,但 Chipmunk 中的问题是相同的 https://drive.google.com/file/d/1ZCcEwuqM-m4E5qe94vCn52yWMON8rd5P/view?usp=分享

android intellij-idea shared-resource android-studio source-sets

41
推荐指数
2
解决办法
5049
查看次数

Android gradle buildTypes:重复类

我正在将我的应用程序转换为使用gradle,我正在尝试使用buildTypes.我有一个Constants类,我希望为我的发布版本修改.所以我有一个文件在src/main/java/my/package/name/Constants.javasrc/release/java/my/package/name/Constants.java.

当我尝试构建它时,gradle告诉我Constants在我的发布版本类型中文件的构建失败,错误是它是一个重复的类.

我也尝试在我build.gradle这样添加一个不同的sourceSet :

sourceSets {
    main {
        java.srcDirs = ['src/main/java'];
        //...
    }
    release {
        java.srcDirs = ['src/release/java'];
    }
}
Run Code Online (Sandbox Code Playgroud)

但这仍然给我同样的错误.所以我想知道,我在这里做错了什么?

android build gradle source-sets

32
推荐指数
1
解决办法
1万
查看次数

SharedTest 在 Android Studio Chipmunk 上收到警告“检测到重复内容根”

升级到 Android Studio Chipmunk 后,我的测试失败了,因为我无法访问在 build.gradle 中定义的共享文件夹内的文件,如下所示。

sourceSets {
    androidTest.java.srcDirs += "src/sharedTest/java"
    test.java.srcDirs += "src/sharedTest/java" }
Run Code Online (Sandbox Code Playgroud)

它显示弹出警告,并显示消息“检测到重复的内容根”。模块 [unitTest] 的路径 [sharedTest] 已从模块 [androidTest] 中删除。任何人都可以解决这个问题吗?

android source-sets android-studio-chipmunk

16
推荐指数
1
解决办法
5406
查看次数

Gradle:自定义源设置为主要和测试的依赖

我在Gradle项目中创建了自定义源集,以保留所有生成的代码:

sourceSets {
  generated {
    java {
      srcDir 'src/generated/java'
    }
    resources {
      srcDir 'src/generated/resources'
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我想要在编译可用此源集合的代码编译的结果,运行时间maintest源集.

在Gradle中以正确的语义方式做什么?

更新:

如此处所示:如何向Gradle添加新的源集?对我来说不起作用,我java.lang.ClassNotFoundException在启动应用程序时仍然会得到(虽然编译和单元测试运行正常).这是我尝试过的:

sourceSets {
  main {
    compileClasspath += sourceSets.generated.output
    runtimeClasspath += sourceSets.generated.output
  }

  test {
    compileClasspath += sourceSets.generated.output
    runtimeClasspath += sourceSets.generated.output
  }
}
Run Code Online (Sandbox Code Playgroud)

java classpath gradle source-sets

15
推荐指数
1
解决办法
1万
查看次数

Kotlin:测试中的java.lang.NoSuchMethodError

是否可以在不同的源集中使用Kotlin包函数和包属性?当我试图这样做时,我已经NoSuchMethodError抛出了.


我有一个带有Kotlin代码的Gradle项目和两个源集,main以及test.在main,我在其中一个文件中有以下代码:

package ru.ifmo.ctddev.igushkin.dkvs
...
public val payloadSplitter: String = " ### "
Run Code Online (Sandbox Code Playgroud)

test我尝试使用payloadSplitter以下代码访问:

package ru.ifmo.ctddev.igushkin.dkvs
...
public class MessageTests {
    ...
    test fun testParsing() {
        ...
        checkParseAndToString("p1b 345 ${payloadSplitter} set a b c")
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

正好在payloadSplitter访问的第一行,在运行时我得到

java.lang.NoSuchMethodError: ru.ifmo.ctddev.igushkin.dkvs.DkvsPackage.getPayloadSplitter()Ljava/lang/String;
Run Code Online (Sandbox Code Playgroud)

其他全局变量和函数也无法test使用相同的错误.


UPD科特林队解释这个问题,并公布了修复这里.

nosuchmethoderror gradle kotlin source-sets

11
推荐指数
2
解决办法
3083
查看次数

Gradle:使用依赖关系jar中的资源作为源集

假设我有一个build.gradle:

dependencies {
    compile 'com.group:some-app:1.0.1'
    compile 'com.group:some-app:1.0.1:sources'
}

sourceSets {
    main {
        other {
             srcDir 'src/main/other'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

其中some-app-1.0.1-sources.jar包含源文件 - 不是Java文件,而是可以生成Java的文件.

如何将这些文件包含在内sourceSets

dependencies gradle source-sets

7
推荐指数
1
解决办法
499
查看次数

gradle get资源默认输出目录

Gradle:如何获取默认资源输出目录?

println sourceSets.main.resources.outputDir
Run Code Online (Sandbox Code Playgroud)

错误:

Needs to set a non-null value before it can be retrieved
Run Code Online (Sandbox Code Playgroud)

directory resources gradle output source-sets

6
推荐指数
2
解决办法
3553
查看次数

从 Flutter 上的调试构建中排除资产

我的 /assets/files 文件夹中有 8000 多个名为(1.txt、2.txt、3.txt 等)的文件。但是,我的调试版本不需要所有这些。我只需要其中的前 30 个。事实上,如果我将所有这些文件留在资产文件夹中,构建时间会很长。

我了解到有一个源集概念,但它仅适用于 Android Studio 上的 Java 和 Kotlin。

如何从 Flutter 的调试版本中排除那些超出的文件?

assets gradle android-studio source-sets flutter

6
推荐指数
1
解决办法
339
查看次数