【问题标题】:language values usage in sourceSetssourceSets 中的语言值使用
【发布时间】:2017-12-20 22:57:25
【问题描述】:

我为我的默认值创建文件夹结构

build.gradle 中的源集

 sourceSets {
        main {
            res.srcDirs =
                    [
                            'src/main/res/layouts/activities',
                            'src/main/res/values/strings/counters',
                            'src/main/res/values/strings/login',
                            'src/main/res/values/strings/memories',
                            'src/main/res/values/strings/profile',
                            'src/main/res/values/strings/profile/settings',
                            'src/main/res/values/strings',
                            'src/main/res/values/strings/values-tr/aa',
                            'src/main/res/values/strings/values-tr',
                            'src/main/res/values',
                            'src/main/res/layouts',
                            'src/main/res'
                    ]
        }
    }

它适用于默认值;但是当我在 values-tr 中尝试相同的层次结构时,应用程序不知道 values-tr 中的字符串。

我该如何处理?

【问题讨论】:

    标签: android android-gradle-plugin build.gradle source-sets


    【解决方案1】:

    一般对于 res 文件夹中的子文件夹,您可以根据需要命名文件夹,但这些文件夹必须以其原始名称作为子文件夹。

    例如,假设我们想要制作这样的层次结构

    res/layout/activities/abstractActivities/activity_main.xml
    

    所以 abstractActivities 文件夹必须有名为“layout”的子文件夹(layout 是来自项目打开的原始文件夹名称。)和 strings/drawables/anims 所有 res 元素相同。

    这是我的项目文件夹层次结构,

    我重新排列了每个 res 文件夹。但是每个文件夹都有自己的原始命名子文件夹。

    对于动画

    -res/animation/dialog/anim/dialog_animaiton_enter.xml

    应用图标

    -res/app_icon/mipmap_hdpi/ic_launcher.png

    对于字符串值

    -res/strings/counters/values-bs/strings_counters.xml

    这里是 sourceSets 代码

    sourceSets {
            main {
                res.srcDirs =
                        [
                                //strings
                                'src/main/res/strings/counters',
                                'src/main/res/strings/memories',
                                'src/main/res/strings/profile',
                                'src/main/res/strings/profile/settings',
                                'src/main/res/strings/login',
                                'src/main/res/strings',
                                //layouts
                                'src/main/res/layouts/activities/login',
                                'src/main/res/layouts/activities',
                                'src/main/res/layouts/fragments/profile/settings',
                                'src/main/res/layouts/fragments/profile',
                                'src/main/res/layouts/fragments/counters',
                                'src/main/res/layouts/fragments/memories',
                                'src/main/res/layouts/dialogs',
                                'src/main/res/layouts/rows',
                                'src/main/res/layouts/widgets',
                                'src/main/res/layouts',
                                //anim
                                'src/main/res/animation/dialog',
                                'src/main/res/animation/heart',
                                'src/main/res/animation/layout',
                                //drawable
                                'src/main/res/visual/icons',
                                'src/main/res/visual/xml',
                                //app icon
                                'src/main/res/app_icon',
                                //main
                                'src/main/res'
                        ]
            }
        }
    

    我没有找到任何更简单的方法来总结 sourceSet =(

    【讨论】:

      【解决方案2】:

      很遗憾,你不能。资源编译器不正式支持资源子目录,带有限定符的子目录也是如此。

      这里有一些跟踪问题的错误:https://issuetracker.google.com/issues/37009920

      【讨论】:

      • 但这是一个旧帖子,我可以做到 =)
      猜你喜欢
      • 2020-07-14
      • 2016-01-01
      • 1970-01-01
      • 2020-10-09
      • 2013-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多