使用图书馆项目的活动

Gra*_*eme 16 android library-project

我有一个Library项目设置和一个依赖于这个库项目的项目 - Everything编译得很好,但我的Dependent项目运行正常;

我在使用Library项目中的Activity时遇到了间歇性问题.

我的Library项目可以作为库项目"取消选中","选择器"活动可以单独运行.Library在它自己的权利运行项目工作正常没有问题.

当我使用Library依赖项目中的项目(和"选择器"活动)时,它给了我NullPointerExceptions(或历史上DexOp)错误,说"picker"Activity无法找到它的资源.

任何人都可以告诉我他们之前是否经历过这种情况吗?

编辑

手动将项目活动layout.xml使用的Library项目活动复制到依赖项目使项目正确打开"选择器"活动.这需要吗?!当然不是吗?这进一步让我想知道R.javaLibrary项目中合并/引用整数id是否存在问题.

编辑

我不确定这是否有任何后果,但我的一个Library项目是围绕在不同前端项目中使用的一组自定义视图的包装器.

这些自定义视图都有一个Activity,因此可以单独测试它们.

其中一个视图具有自定义属性,这些属性在隔离运行时非常有效.但是,似乎依赖项目没有正确地拉入属性并将它们保留在原始命名空间中,导致导入的布局抛出编译错误:

[2012-05-16 12:07:28 - Project] D:\opt\workspace\CustomGlowList\res\layout\main.xml:14: error: No resource identifier found for attribute 'listId' in package 'com.company.library.glowlist'
[2012-05-16 12:07:28 - Project] D:\opt\workspace\CustomGlowList\res\layout\main.xml:14: error: No resource identifier found for attribute 'type' in package 'com.company.library.glowlist
Run Code Online (Sandbox Code Playgroud)

编辑

通过删除Dependent项目中存在的重复文件名来解决DexOp错误.不确定文件名是问题还是文件内容.

编辑

到目前为止,我一直无法找到这个问题的解决方案(尽管@ yorkw的答案肯定有助于xml属性!谢谢).

我设法让这个问题断断续续:

我已经通过每个库项目中去,并确保他们都有自己的命名空间(即com.company.library.component1,com.company.library.component2等).经过几次干净(每个项目按正确的优先顺序排序)后,这个问题会自行解决,但是当切换库/而不是库来测试组件时,最终会回来.

yor*_*rkw 14

原因:

问题9656:库项目不支持自定义类的自定义XML属性

解:

升级到最新的SDK和ADT版本(修复版自r17发布)并http://schemas.android.com/apk/res-auto用作自定义属性的命名空间URI,请参阅ADT 17.0.0的修订版:

添加了对库中自定义属性的自定义视图的支持.使用自定义属性的布局必须使用命名空间URI http://schemas.android.com/apk/res-auto而不是包含应用程序包名称的URI.在构建时,此URI将替换为特定于应用程序的URI.

相关主题:

帮助Android库项目中的自定义视图属性


Gra*_*eme 1

R该问题是由于每个Library项目的文件未正确构建和引用而引起的。资源文件是直接从调用项目构建和引用的。

每个都Libraries需要有唯一的包,如AndroidManifest.xml. Library这导致它的每个资源都在调用项目中的唯一命名空间中与包含文件的 jar一起编译class

<code>R</code> 文件位于情况

当在库和可运行项目之间切换时,问题会变得间歇性,因为clean and build需要重新生成这些文件,因为取消单击复选框时不会自动完成Use as library,而 jar (和 java 类)不需要那么多哄骗它们被正确引用,因为库项目在充当Library.

这可能会导致间歇性和不同的错误,包括丢失引用,DexOpNullPointerException取决于R.java文件被破坏或部分构建的程度以及包之间发生的冲突。