关于Android SDK工具Lint的误报:Class referenced in the manifest, com.xxx.xxx.receiver.NetworkReceiver, was not found in the project or the libraries
Posted on 2013-03-07 20:25 疯狂的大春 阅读(10230) 评论(0) 编辑 收藏 举报本文为原创文章,欢迎转载,但请注明出处http://www.cnblogs.com/yexiubiao/archive/2013/03/07/2948751.html,未在文章页面明显位置给出原文连接的,将保留追究法律责任的权利。
在项目基本做完后,我们通常会用Android SDK自带的工具Lint来检查一下项目中的一些潜在的问题(右键工程-->Android Tools-->Run Lint:Check for Common Errors),但是有时会出现误报,如题。
假如我们的项目是由多个工程组成的,在类库工程里我们定义了一个继承至BroadcastReceiver的类NetworkReceiver,用来保存网络改变后的状态,然后在实际工程中的清单文件中注册这个类,如:
<!-- 监听网络状态改变 -->
<receiver android:name="com.xxx.xxx.receiver.NetworkReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<receiver android:name="com.xxx.xxx.receiver.NetworkReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
如果此时我们运行lint检查错误的话,会发现清单文件里注册这个类的地方会报错如下:
Class referenced in the manifest, com.xxx.xxx.receiver.NetworkReceiver, was not found in the
project or the
libraries(在清单文件中引用的类com.xxx.xxx.receiver.NetworkReceiver没有在工程中或类库中找到)
其实这里是一个误报,直接无视掉就行,当我们修改完其他Lint错误后,只要再次重复之前的操作(右键工程-->Android
Tools-->Clear Lint Markers)即可,这个类是完全可以正常工作的。
补充:
在类库工程中定义的所有类在实际工程的清单文件中注册时都会报同样的错,例如在类库中自定义了Application,然后在实际项目中注册时就会报错,但是同样不影响使用。