3

文字列を解析して int を取得する方法を探していて、つまずいたのは次のとおりです。

NumberUtils.toInt("blah",99);

IDEに入力すると、これが自動的にインポートされました:

import autovalue.shaded.org.apache.commons.lang.math.NumberUtils;

だから私は知りたいのですが、何が何でautovalue.shaded、なぜ「シェーディング」なのorg.apache.commonsですか?

そして、これを使用して私のニーズを満たすのは安全NumberUtilsですか?

検索してみましたが、shaded jar や uber jar など、検索結果で出てくる想定知識がよくわかりません。

ここに画像の説明を入力

4

1 に答える 1

1

「シェーディング」とは、独自の jar ファイル内に依存関係クラスを埋め込むプロセスです。AutoValue は、一時的な依存関係を制限するためだけでなく、依存関係のバージョンの安定性を確保するためにもこれを行います。

シェーディングについて詳しくは、https ://maven.apache.org/plugins/maven-shade-plugin/ をご覧ください。

依存関係のバージョンを制御できなくなるため、コードで影付きの依存関係を使用しないことを強くお勧めします。依存関係を直接追加するだけで、いつ更新するかを制御できます。

gradle の依存関係をチェックして、ターゲットに AutoValue がないことを確認することもできますcompile。他の依存関係から、これは Android プロジェクトであることがわかります。AutoValue がcompileターゲットにある場合は、必要以上に大きな APK が必要になります。aptクラスが最終製品に含まれないように、 を介して Annotation Processor クラスパスに含める必要があります。Hugo Visser には、Android プロジェクトのターゲットを有効にするための優れたgradle プラグインがあります。apt

于 2016-03-24T21:25:14.887 に答える