Android Studio:是不是可以在主模块中定义库模块清单占位符?
Posted
技术标签:
【中文标题】Android Studio:是不是可以在主模块中定义库模块清单占位符?【英文标题】: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 的优先级较低。 【参考方案1】:是的!我们可以做到!
只需将代码添加到库的 build.gradle 中:
manifestPlaceholders = [
customPlaceholder: '$customPlaceholder'
]
【讨论】:
确保你使用'$customPlaceholder'
而不是 "$customPlaceholder"
花了我 1 小时
如果使用 build.gradle.kts 它是:manifestPlaceholders["customPlaceholder"] = "\$customPlaceholder"
我对这个答案有点困惑。该值被单引号包围,我的理解是单引号应该只用于直接字符串,对吧?我觉得这“有效”的原因是错误的。以上是关于Android Studio:是不是可以在主模块中定义库模块清单占位符?的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio:应用程序图标未出现在主屏幕或应用程序列表中