是否可以在Android中创建自定义库(具有自己的布局资源),以便在多个Android应用程序中使用?
我创建了一个常规* .jar文件但是当我尝试动态创建/设置我的视图时,大多数属性都不起作用。甚至引用android.jar文件中的简单样式,例如 android.attr.listSeparatorTextViewStyle 也不起作用。
我创建了一个没有任何Activity的Android项目,拥有自己的资源文件,然后从另一个Android项目中引用该项目以在其构建路径中使用。一切似乎工作正常,但是当我尝试运行项目时,模拟器不断崩溃(在 LogCat 中没有有意义的错误消息)。
我错过了什么吗?
答案 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的未来版本中。