参考这个答案.是否可以像链接答案中的那个一样创建productFlavors和sourceSets使用复制构造函数initWith.那一个很有用buildTypes.
因为buildTypes它是这样做的:
debugfree.initWith(buildTypes.debug)
Run Code Online (Sandbox Code Playgroud)
这是可能的productFlavors和sourceSets呢?
android gradle android-productflavors android-build-type android-sourcesets
可以说我有以下内容sourceSets:
sourceSets {
flavor1 {
assets.srcDirs = ['repo-assets/flavor1']
res.srcDirs = ['repo-res/flavor1']
}
flavor2 {
assets.srcDirs = ['repo-assets/flavor2']
res.srcDirs = ['repo-res/flavor2']
}
flavor3 {
assets.srcDirs = ['repo-assets/flavor1']
res.srcDirs = ['repo-res/flavor1']
}
flavor4 {
assets.srcDirs = ['repo-assets/flavor2']
res.srcDirs = ['repo-res/flavor2']
}
}
Run Code Online (Sandbox Code Playgroud)
如果你注意到flavor1并且flavor3有相同的srcDirs,那么flavor2和flavor4.
我试图找出是否有办法通过使用这样的东西来避免冗余:
sourceSets {
flavor1, flavor3 {
assets.srcDirs = ['repo-assets/flavor1']
res.srcDirs = ['repo-res/flavor1']
}
flavor2, flavor4 {
assets.srcDirs = ['repo-assets/flavor2']
res.srcDirs = ['repo-res/flavor2']
}
}
Run Code Online (Sandbox Code Playgroud)
以上不起作用(已经尝试过).寻找类似的东西,这样我就可以提供一套通用sourceDirs的一套口味.有人试过做类似的事情,可以提供一些指示吗?
android gradle android-studio android-productflavors android-sourcesets
这个问题继续我的另一个问题,我想进一步改进.
我能够sourceSets使用以下代码对flavor(具有通用配置)进行分组:
(从上面链接问题的天才那里得到它)
import com.android.build.gradle.api.AndroidSourceSet
android {
sourceSets {
[flavor2, flavor4].each { AndroidSourceSet ss ->
ss.assets.srcDirs = ['repo-assets/flavor2']
ss.res.srcDirs = ['repo-res/flavor2']
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我想知道列表[flavor2, flavor4]是否可以从以下任何一个中提取:
除了风味名称,我打算将以下内容存储在外部源(上面的一个)中:
productFlavors)PORPOSE: 我想写一个通用的代码片段来迭代并动态创建productFlavors和sourceSets.我已经推广sourceSets到几乎90%,一个块现在足以满足各种口味.
它现在看起来像这样:
sourceSets {
[flavor1, flavor2, flavor3 ...].each { AndroidSourceSet ss ->
ss.assets.srcDirs = ['repo-assets/' + ss.name.split('_')[0]]
ss.res.srcDirs = ['repo-mipmap/' + ss.name.split('_')[0] , 'repo-strings/' + ss.name]
}
}
Run Code Online (Sandbox Code Playgroud)
也想像productFlavors上面提到的那样做同样的事情.
STUCK …
android android-build android-gradle-plugin android-productflavors android-sourcesets
看似与该问题相同的根本原因,但那里的答案对我不起作用。我有一个自定义的源集commonTest,用于在test和androidTest源集之间共享某些测试实用程序代码。这是我相关的项目配置:
sourceSets {
// This lets us write test utility code that can be used by both unit tests and android tests
commonTest {
java
}
test {
java.srcDirs += commonTest.java.srcDirs
}
androidTest {
java.srcDirs += commonTest.java.srcDirs
}
}
Run Code Online (Sandbox Code Playgroud)
这在AGP 3.0.1上可以正常使用,但在AGP 3.1.0上无法使用。不再支持自定义源集吗?
android source-sets android-gradle-plugin android-sourcesets
在 Android studio 3.6 中,创建新项目后,我无法为多个文件夹创建绑定生成的类。
我有多个布局文件夹:
res/layout
res/layouts/dashboard
res/layouts/notifications
Run Code Online (Sandbox Code Playgroud)
我能够为
资源/布局
但它不适用于其他布局文件夹。
应用程序gradle文件:
dataBinding{
enabled = true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java']
res.srcDirs =
[
'src/main/res/layouts/notification',
'src/main/res/layout/dashboard',
'src/main/res/layouts',
'src/main/res/layout',
'src/main/res'
]
assets.srcDirs = ['src/main/assets', 'src/main/assets/']
}
}
Run Code Online (Sandbox Code Playgroud)
资源文件夹结构:
我附上了我在 android studio 3.6 中创建的示例项目。 源代码链接
data-binding android android-databinding android-sourcesets android-studio-3.6