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:应用程序图标未出现在主屏幕或应用程序列表中

如何在Android Studio中发布本地maven库

我可以在 android studio 中添加 Google plus Sign In 作为模块吗?

认识Android Studio中各个模块

1.2Android Studio为新设备创建一个模块

如何在 Android Studio 中导入模块而不创建副本