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

Taw*_*ani 20 android custom-view

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

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

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

我错过了什么吗?

Sac*_*van 17

可能会迟到回复,但发现这很有趣. 建立图书馆计划

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

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


Mat*_*ias 13

好吧,我认为有一种方法可以做到这一点(虽然我自己没有尝试过),但它要求你的图书馆用户必须手动建立自己的APK aapt.

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

因为这意味着您的库的用户必须引入手动构建过程(或至少修改它),这会导致糟糕的体验.

  • 每个人,我都是在Android库项目推出之前发布的.查看Sachin的答案,了解今天如何完成. (3认同)

Com*_*are 5

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

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

甚至引用android.attr.listSeparatorTextViewStyle等android.jar文件中的简单样式也行不通.

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

  • @ greg7gkb:是的,从目前的构建工具R19开始仍然如此.JAR仍然没有资源.*Android库项目*可以拥有资源.目前,虽然JAR是在构建过程中基于这些库项目在内部创建的,但这些JAR不能独立于库项目使用.此功能仍在开发中 - 一旦完成,我们将能够从Android库项目创建JAR,并在没有库项目本身的情况下分发这些JAR.这可能不是在R20,但希望将在2012年晚些时候出现. (3认同)