Android - 是否可以创建一个自定义库以在多个应用程序中使用?

时间:2009-12-01 19:51:16

标签: android custom-view

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

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

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

我错过了什么吗?

4 个答案:

答案 0 :(得分:17)

可能迟到回复但发现这很有趣。 Setting up a Library Project

  

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

     

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

答案 1 :(得分:13)

嗯,我认为有一种方法可以做到(虽然我自己没有尝试过),但它要求你的图书馆用户必须通过aapt手动构建他们的APK。

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

由于这意味着您图书馆的用户必须引入手动构建过程(或至少修改它),因此会带来糟糕的体验。

答案 2 :(得分:5)

  

是否可以创建自定义   android中的库(拥有自己的   用于跨越的布局资源   几个Android应用程序?

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

  

甚至引用简单的样式   android.jar等文件   android.attr.listSeparatorTextViewStyle   没用。

确保将JAR与android.jar相关联。您可以在github page上的CWAC组件中看到许多此示例。

答案 3 :(得分:0)

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

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

  

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

相关问题