0

Android Lint を実行しようとしているかなり大きな Android プロジェクトがあります。--html を指定して lint を実行し、html ファイルを生成すると、正常に動作します。lint --xml を実行すると、無効な XML ファイルが生成されます。Android Lint を Jenkins サーバーに統合しようとしていて、Jenkins には XML ファイルが必要なため、これは問題です。私が得ているエラーは次のとおりです。

org.xml.sax.SAXParseException; lineNumber: 144334; columnNumber: 141; 
An invalid XML character (Unicode: 0x{2}) was found in the value of attribute "{1}" 
and element is "0".

        explanation="You can replace certain strings, such as 1/2, and 1/4, with dedicated characters for these, such as ½ (½) and 

不思議なことに、Lint の説明で不正な文字が原因で失敗しているように見えます。この特定の警告をオフにできることはわかっていますが、それは理想的ではありません。これを防ぐ方法はありますか?ありがとう!

4

1 に答える 1

0

そのため、プラグインにバグが見つかった可能性があります。解決中に他の人の助けになることを期待して、私が思いついた回避策を投稿します。この問題の原因は、Jenkins XML パーサーが警告の説明の一部の文字を読み取れないことです。

したがって、lint を実行するときは、「lint-report-malformed.xml」などのファイルに出力することをお勧めします。その後、別のスタックオーバーフローの質問で、ファイルから無効な文字をフィルタリングするための Perl スクリプトが提供されます。sed または Perl を使用して xml ファイルから無効な文字を削除する方法

perl -CSDA -pe'
   s/[^\x9\xA\xD\x20-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]+//g;
' lint-report-malformed.xml > lint-report.xml

これで、Jenkins プラグインはファイルを読み取ることができます。

于 2013-07-30T14:38:14.500 に答える