【问题标题】:Android Studio: Is it possible to define library module manifest placeholders in main module?Android Studio:是否可以在主模块中定义库模块清单占位符?
【发布时间】:2016-05-11 01:49:47
【问题描述】:

我正在将一些组件添加到库模块清单文件中。显然,即使我没有在库的 build.gradle 文件中声明它,也可以使用 ${applicationId} 占位符。唯一声明它的地方是主模块的 build.gradle。

所以我认为,如果我在主模块中添加一个自定义占位符,它也可以工作。

简而言之:这似乎有效:

库的 AndroidManifest.xml:

<activity android:name="${applicationId}.LibraryActivity" ...>

主模块的build.gradle:

defaultConfig {applicationId "package.name.here"...


但这不是:

库的 AndroidManifest.xml:

<activity android:label="${customPlaceholder} ...>

主模块的build.gradle:

defaultConfig {manifestPlaceholders = [customPlaceholder:"Foo"] ...}


是否有一个原因,一个有效,而另一个无效?

【问题讨论】:

  • 您找到了实现此目的的方法吗?我的情况和你一样。
  • 我有类似但不完全相同的东西。我的库模块有一个启动器活动,我想用主应用程序清单中的一个替换它。有没有办法管理它?我无法编辑主应用程序,因为它有不同的供应商。我只是一个模块,它用作依赖项。清单合并不起作用,因为 Lib 的优先级较低。

标签: android android-studio merge android-manifest placeholder


【解决方案1】:

是的!我们可以做到!

只需将代码添加到库的 build.gradle 中:

    manifestPlaceholders = [
            customPlaceholder: '${customPlaceholder}'
    ]

【讨论】:

  • 确保你使用 '${customPlaceholder}' 而不是 "${customPlaceholder}" 花了我 1 小时
  • 如果使用 build.gradle.kts 它是:manifestPlaceholders["customPlaceholder"] = "\${customPlaceholder}"
  • 我对这个答案有点困惑。该值被单引号包围,我的理解是单引号应该只用于直接字符串,对吧?我觉得这“有效”的原因是错误的。
猜你喜欢
  • 2015-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 2014-02-09
相关资源
最近更新 更多