gpt4 book ai didi

java - 在 Android 项目中使用 Gradle 覆盖具有相同包的类

转载 作者:太空狗 更新时间:2023-10-29 14:46:48 28 4
gpt4 key购买 nike

我必须使用不同的源代码树。在第二个源代码树中,几个类覆盖了第一个源代码树中的这些。看起来像:

  • 项目|
    • source-tree-1/src/com/companyname/MyClass.java
      • ...
    • source-tree-2/src/com/companyname/MyClass.java
      • ...

使用 Gradle 编译时出现错误Error:(20, 8) 错误:类重复:com.companyname.MyClass

有什么方法可以指定从源代码树 2 中获取类并忽略另一个?使用 exclude 不会起作用,因为这将去除包和类名指定的所有类。

sourceSets {
main.java.srcDirs += '../../sourcetree-1/'
main.java.srcDirs += '../../sourcetree-2/'
main {
java {
exclude 'com/companyname/MyClass.java'
}
}
}

我需要使用 gradle 覆盖它们,因为首先来自源代码树 1 的类使用来自 java.awt 包的类,我不能在 Android 项目中使用它。源代码树 2 中的第二个类将覆盖第一个并且不使用任何来自禁止包的类。

不幸的是,我无法更改源代码树 1 中的类或使用此类的任何其他类。所以我需要覆盖这个类。

最佳答案

我已经定义了两个不同的源集。

android {
compileSdkVersion 24
buildToolsVersion "24.0.0"

defaultConfig {
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

sourceSets {
seccomdev {
java {
srcDirs '../../SecCommerce-Dev/'
exclude '....'
exclude '....'
exclude '....'
}
}

main {
java {
srcDirs '../../SecCommerce-Android/src/'
srcDirs '../../SecCommerce-Android/gen/'
}
}
}
}

所以问题是如何在编译项目时组合这些源集。如果你谷歌你会发现类似的东西:

main {
java {
compileClasspath += seccomdev.output
runtimeClasspath += seccomdev.output
}
}

在这种情况下,我收到错误:Error:(122, 0) Could not get unknown property 'compileClasspath' for ...

另一个找到的解决方案是添加一个依赖:

dependencies {
compile android.sourceSets.seccomdev
}

但我收到错误:错误:(134, 0) 无法将提供的符号转换为依赖类型的对象:源集 seccomdev。

使用这样的东西:

dependencies {
compile files(android.sourceSets.seccomdev.java)
}

我得到:错误:无法将提供的符号转换为文件或 URI:[src/seccomdev/java, ../../SecCommerce-Dev/]。

并使用

dependencies {
seccomdevCompile ':...'
}

至少会编译gradle文件,整个编译过程开始。不幸的是,第一个源代码树/sourceSet 中的 java 文件根本没有被编译。所以我得到了数百个错误,因为无法找到第二个源集的 java 类中的导入。


所以问题仍然是,由于代码依赖性,如何在一次编译中合并两个不同的源代码树?

关于java - 在 Android 项目中使用 Gradle 覆盖具有相同包的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39273749/

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