【问题标题】:Android - Is it possible to create a custom library to use across several applications?Android - 是否可以创建一个自定义库以跨多个应用程序使用?
【发布时间】:2010-12-22 03:44:53
【问题描述】:

是否可以在 Android 中创建自定义库(拥有自己的布局资源)以供多个 Android 应用程序使用?

  • 我创建了一个常规的 *.jar 文件,但是当我尝试动态创建/设置视图样式时,大多数属性都不起作用。即使从 android.jar 文件中引用简单的样式(例如 android.attr.listSeparatorTextViewStyle)也不起作用。

  • 我创建了一个没有任何 Activity 的 Android 项目,拥有自己的资源文件,然后从另一个 Android 项目中引用了该项目以在其构建路径中使用。一切似乎都运行良好,但当我尝试运行项目时,模拟器不断崩溃(LogCat 中没有有意义的错误消息)。

我错过了什么吗?

【问题讨论】:

    标签: android custom-view


    【解决方案1】:

    R21 仍然如此吗?我能够将库项目导出到 jar 文件中并成功用于其他客户项目,无论是代码还是访问资产文件。

    然而http://developer.android.com/tools/projects/index.html 仍然有以下似乎不再正确的陈述:

    您不能将库项目导出到 JAR 文件 作为二进制文件(例如 JAR 文件)分发。这将被添加 在 SDK 工具的未来版本中。

    【讨论】:

      【解决方案2】:

      可能回复晚了,但发现这很有趣。 Setting up a Library Project

      Android 库项目是一个 共享的开发项目 Android 源代码和资源。 其他安卓应用项目可以 参考图书馆项目,并在 构建时间,包括其编译 .apk 文件中的源代码。多种的 应用项目可以参考 同一个图书馆项目和任何一个 应用项目可以参考 多个图书馆项目。

      如果你有源代码和资源 多个共同的 应用项目,可以移动 他们到图书馆项目,以便它 更容易维护 应用程序和版本。这里是 一些常见的场景,你 可以利用图书馆项目:

      【讨论】:

        【解决方案3】:

        嗯,我认为有办法做到这一点(虽然我自己没有尝试过),但它要求你的库的用户必须通过 aapt 手动构建他们的 APK。

        问题在于:您要导出的 JAR 包含 R 类文件,其中包含您的库的资源 ID。因此,任何应用程序都可以通过简单地链接 JAR 来访问这些 ID。但是,这还不够,因为默认情况下,只有应用程序的 res/ 文件夹中的资源与 APK 捆绑在一起。因此,您必须使用 aapt 自己创建 APK,告诉它还包含您库中的任何资源。查看 aapt 工具帮助了解更多信息。

        由于这意味着您的库的用户必须引入手动构建过程(或至少对其进行修改),因此体验很差。

        【讨论】:

        • 大家,我在 Android 库项目可用之前发布了这个。查看下面 Sachin 的回答,了解今天是如何做到的。
        【解决方案4】:

        是否可以创建自定义 android中的库(有自己的 布局资源)用于跨 几个安卓应用?

        没有。 JAR 不能有资源。您可以通过这种方式共享代码,但资源必须驻留在重用 JAR 的应用程序中。

        即使引用简单的样式 android.jar 文件如 android.attr.listSeparatorTextViewStyle 没用。

        确保您将 JAR 链接到 android.jar。您可以在我的github page 上的 CWAC 组件中看到很多这样的示例。

        【讨论】:

        • 新的构建工具不再是这种情况。
        • @greg7gkb:是的,现在的构建工具 R19 仍然如此。 JAR 仍然不能拥有资源。 Android 库项目 可以有资源。目前,虽然 JAR 是在构建过程中基于这些库项目在内部创建的,但这些 JAR 不能独立于库项目使用。此功能仍在开发中——一旦完成,我们将能够从 Android 库项目创建 JAR 并在没有库项目本身的情况下分发这些 JAR。这可能不在 R20 中,但希望会在 2012 年晚些时候出现。
        猜你喜欢
        • 2017-11-26
        • 1970-01-01
        • 2013-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-25
        • 2020-09-17
        • 1970-01-01
        相关资源
        最近更新 更多