我还遇到了各种选项的模块编译问题。
我发现的是:
从Gradle 3.0.1开始,看来我们不需要添加publishNonDefault true
到lib的build.gradle
文件中。
反编译一个类后,BaseExtension
发现以下内容:
public void setPublishNonDefault(boolean publishNonDefault) {
this.logger.warn("publishNonDefault is deprecated and has no effect anymore. All variants are now published.");
}
而不是:
dependencies {
...
Compile project(path: ':lib', configuration: 'config1Debug')
}
我们应该使用:
dependencies {
...
implementation project(':lib')
}
唯一重要的是要在中添加一个configurations {...}
部分build.gradle
。
因此,应用程序build.gradle
文件的最终变体是:
buildTypes {
debug {
...
}
release {
...
}
}
flavorDimensions "productType", "serverType"
productFlavors {
Free {
dimension "productType"
...
}
Paid {
dimension "productType"
...
}
Test {
dimension "serverType"
...
}
Prod {
dimension "serverType"
...
}
}
configurations {
FreeTestDebug
FreeTestRelease
FreeProdDebug
FreeProdRelease
PaidTestDebug
PaidTestRelease
PaidProdDebug
PaidProdRelease
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(':lib')
...
}
另外,您可以使用筛选器变体来限制构建变体。
PS不会忘记在settings.gradle
文件中包含模块,例如:
include ':app'
include ':lib'
project(':lib').projectDir = new File('app/libs/lib')
3.4.2
版本并升级到最新版本5.5.1
,它仍然会因编译时间而失败,或者在aapt中资源链接失败,或者找不到库中的符号模块