当前位置: 首页 > 知识库问答 >
问题:

gradle android插件和buildtype源集的问题

田佐
2023-03-14

我是新的gradle和想使用gradle android插件的口味,构建类型和自定义源集。使用flavors和buildtypes构建works find。不幸的是,我有一个遗留的项目目录结构,所以我必须为buildTypes定制res目录。

buildtype的附加资源(基本上是一些字符串配置值)似乎不会合并到构建中,也不会替换主树中的资源键。

以前有人问过这个问题,我知道有Gradle productflavors源集和旧的项目结构,我如何指定每个味道的buildType源集?

我想引用Xavier在第一篇文章中的一句话:“您需要首先声明您的口味,然后定制源集。”

我知道味道配置会自动创建源集,然后需要对它们进行修改。这就是我在下面的build.gradle中尝试的,但是我为每个buildtype添加的“res.srcdirs”似乎都被忽略了,我想不出原因。

在第二篇文章中(最后一篇评论带有到github的链接),我看到了build.gradle中复杂的sourceset修改。有没有更简单的方法呢?(参见此处:https://github.com/shakalaca/learning_gradle_android/blob/master/07_tricks/app/build.gradle)

这是我对gradle android插件的构建配置:

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 17
    }

    sourceSets {

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

    productFlavors {
        normal {
        }

        proguard {
            proguardFile file("proguard-project.txt")
        }
    }


    buildTypes {

        dev {
            packageNameSuffix ".dev"
            debuggable true
            signingConfig android.signingConfigs.debug

        }

        beta {
            packageNameSuffix ".beta"
            debuggable true
            signingConfig android.signingConfigs.debug
        }

        live {
            packageNameSuffix ".live"
            debuggable true
            signingConfig android.signingConfigs.debug
        }
    }

   sourceSets.dev.res.srcDirs = ['variations/dev']
   sourceSets.beta.res.srcDirs = ['variations/staging']
   sourceSets.live.res.srcDirs = ['variations/live']
}

共有1个答案

燕靖
2023-03-14

您的build.gradle应该很好,检查variations目录,dev/stagin/live文件夹结构应该与res目录相同。

app/AndroidManifest.xml
app/src/com/...
app/res/values/strings.xml
app/res/layout/main_activity.xml
app/variations/dev/values/strings.xml
app/variations/staging/values/strings.xml
app/variations/live/values/strings.xml

顺便说一句,您定义了ProGuardFile,但没有runProguard true

 类似资料:
  • 编辑口味和路径: 目前我有: ext是一个文件,其中所有特定于ProductFlayer的配置都是这样定义的: 然而,我真的希望动态添加,这样我仍然可以保持我的配置文件完整。我的构建配置非常复杂,并不像这里描述的那么简单,因此我不需要建议将源文件放入文件夹SRC/Flavor1Debug中,因为这些资源也来自其他productFlavors,所以这不起作用。

  • Java 插件引入了资源设置 (Source Set) 的概念, 资源设置就是一组被编译和执行在一起的源文件. 这些源文件可能包含 Java 的源文件以及一些资源文件. 其他的插件可能还会在资源设置中包含 Groovy 和 Scala 的源文件. 资源设置有一个与之关联的关于编译的 classpath 和有关运行的 classpath. 资源设置的用法之一就是将源文件归档到描述它们目的的各个逻辑组

  • 你可以通过 sourceSets 属性来使用资源设置. 它其实是一个项目资源设置的容器, 它的类型是 SourceSetContainer. 同时也有 sourceSets { } 脚本模块, 在这个模块里, 你可以通过闭包配置资源设置容器. 资源设置容器的工作方式和其余容器几乎一模一样, 比如 tasks. 例 22.3. 进入资源设置 build.gradle // Various ways

  • coming soon。。。。= = 对于Gradle的task(DefaultTask,JavaCompile,Copy,Zip),请参考Gradle文档。

  • 以下 是对开发kibana 插件有用的资源 IRC channel kibana 官方为大家注册了一个类似聊天室的通道,在这里大家可以获取有用咨询和交流 Freenode Web Client. 文章 contributing guide kibana-plugin-notes(强烈推荐阅读) 视频 Contributors Guide to the Kibana Galaxy Kibana Pl

  • 我正在尝试使用IntelliJ(v11.1.3)创建一个简单的Javawebapp,并将其与一个简单的maven pom文件集成以下载Vaadin jar。 这是我的pom文件: 我正在从版本控制中签出此项目,以便在IntelliJ中进行设置。然而,IntelliJ似乎无法识别“src”文件夹是源文件夹。我可以在项目设置中手动将其设置为sources文件夹,这是一个小麻烦,但不是什么大问题。然而,