我正在我的一个项目中使用标签,并对htmlschema.java进行了一些修改以应对嵌套列表标签。当我测试这些更改时,它们根本没有影响。我在Java独立应用程序中测试了相同的更改,并按照预期的方式工作。
当我尝试调试应用程序时,我注意到它没有在调试器中显示正确的行号,因此我在这样的情况下做了您通常做的事情:重新构建项目,重新启动IDE,重新启动Android设备和PC,创建一个新的Android项目,无济于事。
我从某些类中删除了所有代码,并且该应用程序仍然像以前一样运行,因此显然,Android使用了与我在应用程序中部署的类不同的类。除了通常的主动脉,布局和可抽签外,我将一个空的Android测试项目添加了所有内容,并添加了标签类和代码与TagSoup解析,并且仍然没有使用"我的"标签类。我用两个4.4.2 Nexus设备对此进行了测试,并在Note 2上运行4.1.2。
仅当我从org.ccil.cowan.tagsoup重命名为其他内容时(例如org.ccil.cowan.tagsoup2)时,它是否使用了与我的应用程序部署的类"。
我的问题很简单:到底发生了什么?
tagsoup是Android本身的一部分。它的类的副本,即带有框架的船,将自动加载到虚拟机上……即使它们不属于Android SDK。您会在Bouncycastle等图书馆看到同样的东西。
重构第三方库 - 使用 jarjar
或其他方式 - 允许Android的版本和您的库版本共存。