简短的回答
如果您完全确定您的应用程序可以与其他构建类型(调试)一起按预期工作,则通过将以下内容添加到您的proguard-rules.pro
文件来抑制警告
-dontwarn com.github.siyamed.shapeimageview.**
长答案
警告说它找不到引用的类org.kxml2.io.KXmlParser
。KXmlParser
仅在SvgToPath.java中使用,如下图所示:
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);
}
}
...
}
我认为这会导致它失败的两个潜在原因之一:
- 您使用的库不包含
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.** { *; }