20

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

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

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

我错过了什么吗?

4

4 回答 4

17

可能回复晚了,但发现这很有趣。 建立图书馆项目

Android 库项目是一个包含共享 Android 源代码和资源的开发项目。其他 Android 应用程序项目可以引用该库项目,并在构建时将其编译源包含在其 .apk 文件中。多个应用程序项目可以引用同一个库项目,任何单个应用程序项目都可以引用多个库项目。

如果您有多个应用程序项目共有的源代码和资源,您可以将它们移动到库项目中,以便更容易跨应用程序和版本进行维护。以下是您可以使用库项目的一些常见场景:

于 2011-02-04T06:36:14.980 回答
13

好吧,我认为有一种方法可以做到这一点(虽然我自己没有尝试过),但它要求你的库的用户必须通过aapt.

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

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

于 2009-12-02T09:46:44.947 回答
5

是否可以在 android 中创建一个自定义库(具有自己的布局资源)以用于多个 android 应用程序?

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

即使从 android.jar 文件中引用简单的样式(例如 android.attr.listSeparatorTextViewStyle)也不起作用。

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

于 2009-12-02T05:08:57.117 回答
0

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

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

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

于 2013-05-03T18:39:54.577 回答