[英]Override classes with same package with Gradle in an Android project
我有不同的源樹。 在第二個源樹中,幾個類重寫了第一個源樹中的tose。 看起來像:
使用Gradle編譯時出現錯誤錯誤:(20,8)錯誤:重復類:com.companyname.MyClass
有沒有辦法指定從源樹2中取出Class並忽略另一個? 使用exclude不會工作,因為這將刪除package和classname指定的所有類。
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
}
}
在這種情況下,我得到錯誤: 錯誤:(122,0)無法獲取未知屬性'compileClasspath'為...
另一個找到的解決方案是添加依賴項:
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類中的導入。
所以問題仍然是如何在一次編譯中將兩個不同的源樹組合起來,因為代碼依賴性?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.