gpt4 book ai didi

android - 我们如何将 androidTest 指向对等 Eclipse 样式的项目?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:59:22 26 4
gpt4 key购买 nike

我正在 NetCipher 帮助守护者项目.由于遗留原因,他们希望保留基于 Eclipse 的现有项目结构。但是,他们没有将测试放在库的 tests/ 子目录中,而是使用了对等项目模型。因此,在 repo root 之外,libnetcipher/ 是库,netciphertest/ 是仪器测试。

libnetcipher/ 本身不同,从来没有为 Gradle build设置仪器测试。因此,我将内容添加到 libnetcipher/build.gradle 文件,让它将其 androidTest 源集指向 netciphertest/ 目录,而不是它的正常位置。

这个有效:

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

但是,重复的 ../netciphertest 位很恶心。当然,我可以将其定义为一个常数,以尽量减少重复。我正在尝试找出是否有更好的方法来解决整个问题。

例如,这不起作用:

    androidTest.setRoot('../netciphertest')

androidTest {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}

我想也许 srcDirssrcFile 的东西可能是相对于 setRoot() 值来解释的,但它们似乎是被解释的相对于项目自己的根目录。

有没有比我正在工作的更优雅的解决方案?

最佳答案

阅读 Gradle 文档,我找不到任何关于 srcDirs 的相对路径和绝对路径的信息,但似乎如果你只是给 src 它会假定 ./src 而不管设置的根目录。也许这可能是一个 Gradle 功能请求,或者可能在更高版本的 Gradle 中按预期工作?不清楚,没细看。

也就是说,假设您不需要 aidlrenderscriptsresources(因为它们没有出现在项目),那么这不那么“恶心”了吗?

androidTest {
setRoot '../netciphertest'
java.srcDirs = ['../netciphertest/src']
}

如果您不覆盖它们而只是设置根目录,所有其他的将自动设置为这样。

androidTest.manifest.srcFile = /NetCipher/netciphertest/AndroidManifest.xml
androidTest.res.srcDirs = [/NetCipher/netciphertest/res]
androidTest.assets.srcDirs = [/NetCipher/netciphertest/assets]

// Override these, if you wish
androidTest.resources.srcDirs = [/NetCipher/netciphertest/resources]
androidTest.aidl.srcDirs = [/NetCipher/netciphertest/aidl]
androidTest.renderscript.srcDirs = [/NetCipher/netciphertest/rs]

您可以打印出 Gradle 中的路径,如果您愿意,可以通过将此部分包含在 sourceSets block 中来更多地使用它。

println "androidTest.manifest.srcFile = ${androidTest.manifest.srcFile}"
println "androidTest.java.srcDirs = ${androidTest.java.srcDirs}"
println "androidTest.resources.srcDirs = ${androidTest.resources.srcDirs}"
println "androidTest.aidl.srcDirs = ${androidTest.aidl.srcDirs}"
println "androidTest.renderscript.srcDirs = ${androidTest.renderscript.srcDirs}"
println "androidTest.res.srcDirs = ${androidTest.res.srcDirs}"
println "androidTest.assets.srcDirs = ${androidTest.assets.srcDirs}"

关于android - 我们如何将 androidTest 指向对等 Eclipse 样式的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36294952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com