短い答え
アプリが他のビルド タイプ (デバッグ) で期待どおりに動作することを完全に確信している場合は、次のコードをproguard-rules.pro
ファイルに追加して警告を抑制します。
-dontwarn com.github.siyamed.shapeimageview.**
長い答え
警告は、参照されたクラスが見つからないことを示していますorg.kxml2.io.KXmlParser
。以下に示すように、 SvgToPath.javaKXmlParser
でのみ使用されます。
import org.kxml2.io.KXmlParser;
...
public class SvgToPath {
...
private static PathInfo parse(InputStream in, boolean ignoreDefs, float dpi) {
try {
XmlPullParser xr = new KXmlParser();
...
} catch (Exception e) {
Log.w(TAG, "Parse error: " + e);
throw new RuntimeException(e);
}
}
...
}
これにより、失敗する2つの潜在的な理由のいずれかが生じると思います。
- 使用しているライブラリには含まれていない
org.kxml2.io.KXmlParser
ため、自分で含める必要があります
- Proguard は壊れている
com.github.siyamed.shapeimageview
かorg.kxml2.io.KXmlParser
、コードを難読化しています。
Proguard がビルドを壊していると思われる場合は、次のことを検討してください。
結局のところ、あなたやほとんどの人が使用しているライブラリは、ほぼ常にオープン ソースです。オープン ソース コードを難読化しても、潜在的な攻撃者はオンラインでソース コードを調べるだけで済むため、何のメリットもありません。
proguard-rules.pro
ファイルに以下を追加することで、クラスを保持できます (Proguard によって難読化されるのを防ぎます)。
-keep class com.github.siyamed.shapeimageview.** { *; }
-keep interface com.github.siyamed.shapeimageview.** { *; }
-keep class org.kxml2.io.KXmlParser.** { *; }
-keep interface org.kxml2.io.KXmlParser.** { *; }