我想用包含数字的枚举值解析一个 xml 文件。来自 android 的 KxmlParser 似乎对此有问题。我查看了代码,它只需要字母和其他一些标记,但没有数字。
因此,我复制了 KxmlParser 实现并更改了该部分,一切正常。但是为了解决引用问题,我在项目中添加了一个 libcore-jar。现在我得到编译错误,因为我不应该使用这个库来创建核心库。
所以这是我的问题:为我的应用程序更改特定于 android 的代码并解决对 libcore 的引用的最佳方法是什么?
我想用包含数字的枚举值解析一个 xml 文件。来自 android 的 KxmlParser 似乎对此有问题。我查看了代码,它只需要字母和其他一些标记,但没有数字。
因此,我复制了 KxmlParser 实现并更改了该部分,一切正常。但是为了解决引用问题,我在项目中添加了一个 libcore-jar。现在我得到编译错误,因为我不应该使用这个库来创建核心库。
所以这是我的问题:为我的应用程序更改特定于 android 的代码并解决对 libcore 的引用的最佳方法是什么?
这并不理想,但如果你需要做一些疯狂的事情(我也做过)并且你正在使用 maven,你可以做这样的事情来遮蔽包裹:
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>jarjar-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>jarjar</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<includes>
<include>com.fasterxml:aalto-xml</include>
<include>commons-codec:commons-codec</include>
<include>javax.xml.stream:stax-api</include>
<include>org.codehaus.woodstox:stax2-api</include>
<include>com.cookies:app</include>
</includes>
<rules>
<!-- We want to used STAX but Android doesn't generally like us including javax packages -->
<rule>
<pattern>javax.xml.stream.**</pattern>
<result>com.cookies.internal.javax.xml.stream.@1</result>
</rule>
<!-- Android packages commons-codec < 1.4 and we want to make use of the Base64OutputStream to *decode* -->
<rule>
<pattern>org.apache.commons.codec.**</pattern>
<result>com.cookies.internal.org.apache.commons.codec.@1</result>
</rule>
</rules>
</configuration>
</execution>
</executions>
</plugin>