当项目中引用了其他的library时,有一定概率会出现空指针异常,查找后发现都是findViewById 返回的View 为空,但是进一步排查后发现id是存在的,那么问题就出现在R文件的id映射问题上。
举个栗子,如果主模块里有个layout叫做man.xml,引用的library里也有个layout叫做man.xml,这时候代码并不会报错,但是当生成APK后,R文件会把主模块的man.xml覆盖掉library的,这样会导致当你代码中以为引用的是library的man.xml,实际上引用的是主模块的,所以会导致findViewById返回空。
这种情况就算你引用library的全限定名的R文件也没用,一旦library和主模块的id重名,就会被主模块的覆盖,因此解决方案只能是改掉一方的名字,避免冲突。
如果大家有更好的方案,可以提出。
android R文件命名冲突问题
最新推荐文章于 2024-08-12 03:29:21 发布