【问题标题】:Android Library Manifest vs. App ManifestAndroid 库清单与应用清单
【发布时间】:2012-04-16 18:00:32
【问题描述】:

我在这里读过类似的问题,但我仍然不清楚一些事情。使用库项目意味着我的整个项目将有两个清单——一个用于库,另一个用于“主”应用程序项目——我不清楚其中的内容或是否有一些冗余。

我正在开发一个具有“精简版”和“付费”版本的应用小部件,因此几乎所有代码都将包含在库项目中。作为一个小部件,该库将至少有一个接收器、一个服务、一个配置活动,以及一些其他活动。那么这些组件的完整声明——包括意图、过滤器等——应该在哪里声明呢?它们是在库的清单中,还是在应用程序包本身的清单中,引用库中的类(例如 android:name="com.foo.mylibrary.MyService")?

我看过的一些示例似乎在两个清单中都声明了它们,但我怀疑将它们放在一个或另一个中是无操作的。

【问题讨论】:

    标签: android android-activity android-manifest android-service android-library


    【解决方案1】:

    使用库项目意味着我的整个项目将有两个清单——一个用于库,另一个用于“主”应用程序项目——我不清楚其中的内容或是否有一些冗余.

    目前未使用库项目清单。

    Gradle for Android 和 Android Studio 支持库项目和发布清单的 AAR。这可能包括活动声明、所需的权限或功能或支持的最低 Android SDK 级别等内容。

    关于库清单如何与应用程序自己的清单合并的规则(尤其是在您考虑构建类型和产品风格时)是a bit complex

    那么这些组件的完整声明(包括意图、过滤器等)应该在哪里声明?

    在宿主项目中。

    该库可以发布这些组件,然后 Android Studio 宿主项目可以根据需要删除它们。

    它们是在库的清单中,还是在应用程序包本身的清单中,引用库中的类(例如 android:name="com.foo.mylibrary.MyService")?

    后者。

    在任何一个中(使用 Gradle for Android 和 Android Studio)。理论上,库更容易发布组件,因此应用程序作者不必这样做。就我个人而言,我不是这方面的忠实拥护者,因为太多的开发人员最终会运送不必要的清单条目。

    【讨论】:

    • 谢谢。这确实是最有意义的(不是说有意义总是适用的!)。
    • @CommonsWare - 我一直很喜欢你的直接回答。在这种情况下,它帮助了我!
    • @CommonsWare 从 ADT r20 预览版 3 开始,现在可以合并清单。所以现在可以将通用配置放入库清单中。 stackoverflow.com/a/10400355/262789
    【解决方案2】:

    从 ADT r20 Preview 3 开始,现在可以合并清单。所以现在可以将通用配置放入库清单中。请参阅https://stackoverflow.com/a/10400355/262789 了解更多信息。

    Intellij IDEA 版本 13 是清单合并支持所必需的 (manifestmerger.enabled=true)。还有基于 Grade 的构建系统 appears to be necessary 用于 Android Studio 支持。

    【讨论】:

      【解决方案3】:

      任何引用的 android 元素(如活动、接收器、服务等)都必须进入您的应用程序清单,否则操作系统将无法识别它们。如您所料,Library 清单文件几乎是一个空实现

      更新

      正如 CommonsWare 上面指出的,Android 构建工具现在将尝试代表您合并各种清单。为后代留下原始答案

      【讨论】:

      • 谢谢。阅读一些文章,听起来像是要合并清单或类似的东西。很高兴得到澄清。
      • 由于此答案已有四年历史,因此指出它现在不正确可能是件好事。请参阅上面 Commonsware 的更新答案。
      猜你喜欢
      • 1970-01-01
      • 2016-01-08
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2023-02-16
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多