Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-将两种内置类型设置为同一个源文件夹_Android_Gradle_Android Gradle Plugin_Android Build_Android Build Type - Fatal编程技术网

Android-将两种内置类型设置为同一个源文件夹

Android-将两种内置类型设置为同一个源文件夹,android,gradle,android-gradle-plugin,android-build,android-build-type,Android,Gradle,Android Gradle Plugin,Android Build,Android Build Type,直到最近,我们的Android应用程序只有两种构建类型debug和release。我们刚刚添加了一个qa构建类型,我想让qa构建类型指向调试源代码,这样我就不必重复代码了。这可能吗 qa和调试之间的主要区别是Proguard。我们的build.gradle文件如下所示: productFlavors { dev { minSdkVersion 21 } prod { minSdkVersion 14

直到最近,我们的Android应用程序只有两种构建类型
debug
release
。我们刚刚添加了一个
qa
构建类型,我想让qa构建类型指向调试源代码,这样我就不必重复代码了。这可能吗

qa和调试之间的主要区别是Proguard。我们的build.gradle文件如下所示:

productFlavors {
        dev {
            minSdkVersion 21
        }
        prod {
            minSdkVersion 14
        }
    }

buildTypes {
    debug { 
        // no proguard
        // use debug code
    }
    qa { 
        // proguard
        // use debug code
    }
    release { 
        // proguard
        // use release code
    }
}
文件结构如下所示:

src
├── debug
│   ├── assets
│   ├── java
│   └── res
├── main
│   ├── java
│   └── res
├── release
│   ├── assets
│   ├── java
│   └── res
我尝试过使用SourceSet,但似乎不起作用:

sourceSets {
    qa {
        java.srcDirs = ['src/debug/java']
        res.srcDirs = ['src/debug/res']
    }
}

沿着这些思路应该能让你达到目的:

android {
    ...

    buildTypes {
        qa {
            minifyEnabled true
        }
    }
    sourceSets {
        qa {
            java {
                srcDirs = ['src/main/java']
            }
        }
    }

    ...

}
虽然在进一步的检查中,这似乎与上面的示例相同,但是我粘贴的格式确实适合我-可能我遗漏了差异,或者可能是其他原因造成的

您可以随时修改build.gradle并将类似的内容粘贴到中,以确保更改生效:

import static groovy.json.JsonOutput.*
println(
    prettyPrint(toJson(
        android.sourceSets.collectEntries {ss -> [ss.name, ss.java.toString()]}
    ))
)

我是如此接近。我只需要添加android清单文件和资产文件夹的位置

sourceSets {
    qa {
        manifest.srcFile 'src/debug/AndroidManifest.xml'
        java.srcDirs = ['src/debug/java']
        res.srcDirs = ['src/debug/res']
        assets.srcDirs = ['src/debug/assets']
    }
}