我有一个包含两个子项目(应用程序和检测测试)的android项目。使用maven-android-plugin构建的一切都很好,直到我向我的应用程序添加了一些自定义属性(res / values / attrs.xml)。
要使用自定义属性,我必须在引用xml文件(res / xml / someFile.xml)中定义新的命名空间:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:fosslab="http://schemas.android.com/apk/res/org.fosslab.android.hazard">
应用程序本身正在构建正常,但是检测测试项目在AndroidManifest.xml中声明了另一个包名称,这就是为什么无法构建检测测试项目。
错误是:hazard-it/res/xml/settings_filter.xml:4: error: No resource identifier found for attribute 'stepSize' in package 'org.fosslab.android.hazard'
在构建检测项目之前,res / *(来自应用程序项目)的所有文件都会被复制到检测项目中。
错误似乎很明显,因为对于检测测试,名称空间声明应该是org.fosslab.android.hazard.tests。
有谁知道如何为仪器测试自动化这些更改。或者我可以离开命名空间并在我的仪器测试项目中更改其他内容吗?
修改 通过从检测项目中删除整个res文件夹并停止将资源从app复制到检测来解决问题。 标记的应用程序apklib和app jar在pom.xml和eveything中提供似乎正常工作。
答案 0 :(得分:0)
您的解决方案允许编译项目,但它不会将其包含在dex文件中。
我能够通过使用像这样的名称空间来解决这个问题:
xmlns:something="http://schemas.android.com/apk/lib/the.package.name"
请注意/lib/
而不是/res/