gpt4 book ai didi

android - Gradle productflavors 源集和旧项目结构

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:19 25 4
gpt4 key购买 nike

今天我开始将我们的项目转换为使用 gradle 构建系统。我无法更改项目结构,而且我有不同的风格,所以我想知道如何覆盖“dev”和“prod”的源集,因为这显然不起作用:

buildscript {
repositories {
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:0.4.2'
}
}

apply plugin: 'android'

android {
compileSdkVersion 17
buildToolsVersion "17"

dependencies {
compile project(':ABS')
compile project(':google-play-services_lib')
compile project(':MergeAdapter')
compile fileTree(dir: 'libs', include: '*.jar')
}

signingConfigs {
release {
storeFile file("myapp.keystore")
storePassword "**********"
keyAlias "**********"
keyPassword "**********"
}
}

sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aild.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}

dev {
java.srcDirs = ['src-dev']
}

prod {
java.srcDirs = ['src-prod']
}

instrumentTest.setRoot('tests')
}

productFlavors {
dev {
packageName "com.myapp.dev"
}

prod {
packageName "com.myapp"
}
}

buildTypes {
release {
signingConfig signingConfigs.release
}
}
}

这给了我以下错误:

Cannot add a AndroidSourceSet with name 'dev' as a AndroidSourceSet with that name already exists.

问题是,我不能使用新的项目结构并且一直坚持这个,所以我如何覆盖这里的源目录,以便它包括,对于开发版本,src-dev 和对于生产版本的 src -prod(而不是 src/main/java 和 src/dev/java 或 src/prod/java)

谢谢!

编辑:src-prod 和 src-dev 目录仅包含具有用于指向不同环境的常量的类。我将对 Assets 做同样的事情(开发环境的不同图标)

最佳答案

您需要先声明您的口味,然后自定义 sourceSets。

当您自定义 sourceSets 时,它会创建 android.sourceSets.dev,但随后在创建 android.productFlavors.dev 时,它会尝试创建匹配的 android.sourceSets.dev 并失败(因为它已经存在)。

我们无法真正知道已经创建的 sourceSet 是同一个东西,所以我们失败了,而不是在您打算将它用于其他东西时潜在地为该风格使用 sourceSet。

关于android - Gradle productflavors 源集和旧项目结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17246242/

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