0

Hi everyone I have some problems with proguard. I have this jars libs in my project:

  • androidsvg-1.2.2-beta-1.jar
  • commons-io-2.6.jar
  • kenburnsview-1.0.7.jar
  • kxml2-2.3.0.jar
  • mapsforge-core-0.8.0.jar
  • mapsforge-map-0.8.0.jar
  • mapsforge-map-android-0.8.0.jar
  • mapsforge-map-reader-0.8.0.jar
  • mapsforge-themes-0.8.0.jar
  • nineoldandroids-2.4.0.jar

When I build in release mode message window show this:

Warning:library class android.content.res.XmlResourceParser extends or implements program class org.xmlpull.v1.XmlPullParser
Warning:com.caverock.androidsvg.SVGImageView: can't find referenced class com.caverock.androidsvg.R$styleable
Warning:com.caverock.androidsvg.SVGImageView: can't find referenced class com.caverock.androidsvg.R
Warning:org.apache.commons.io.FileUtils: can't find referenced method 'java.nio.file.Path toPath()' in library class java.io.File
Warning:org.apache.commons.io.FileUtils: can't find referenced class java.nio.file.Files
Warning:library class android.content.Intent depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.content.IntentFilter depends on program class org.xmlpull.v1.XmlSerializer
Warning:library class android.content.IntentFilter depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.content.res.ColorStateList depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.AnimatedVectorDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.AnimationDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.BitmapDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.ClipDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.ColorDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.Drawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.DrawableWrapper depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.GradientDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.InsetDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.LayerDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.RippleDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.ScaleDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.ShapeDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.StateListDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.graphics.drawable.VectorDrawable depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.util.Xml depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.util.Xml depends on program class org.xmlpull.v1.XmlSerializer
Warning:library class android.util.Xml depends on program class org.xmlpull.v1.XmlPullParser
Warning:library class android.view.LayoutInflater depends on program class org.xmlpull.v1.XmlPullParser
Warning:there were 5 unresolved references to classes or interfaces.
Warning:there were 32 instances of library classes depending on program classes.
Warning:there were 1 unresolved references to library class members.
Warning:Exception while processing task java.io.IOException: Please correct the above warnings first.
Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForRelease'.
> Job failed, see logs for details
Information:BUILD FAILED in 1m 9s
Information:1 error
Information:32 warnings
Information:See complete output in console

then I put this into my proguard-rules.pro:

-dontwarn org.xmlpull.v1.**

-keep class org.xmlpull.** { *; }

-dontwarn org.apache.commons.io.**

-keep class org.apache.commons.io.** { *; }

-dontwarn com.caverock.androidsvg.**

-keep class com.caverock.androidsvg.** { *; }

and my app crash on first launch, I don't know what it is, please some help would be great.

ישו אוהב אותך
  • 28,609
  • 11
  • 78
  • 96
J.M
  • 19
  • 2

1 Answers1

0

First, you need to change they way to include the libraries. Don't use a jar, instead use gradle dependencies. You can take a look at the mapsforge libraries integration guide. It should be something like this:

dependencies {
   // core mapsforge
   implementation 'org.mapsforge:mapsforge-core:v0.9.1'
   implementation 'org.mapsforge:mapsforge-map:v0.9.1'
   implementation 'org.mapsforge:mapsforge-map-reader:v0.9.1'
   implementation 'org.mapsforge:mapsforge-themes:v0.9.1'
   implementation 'net.sf.kxml:kxml2:2.3.0'

   // for android
   implementation 'org.mapsforge:mapsforge-map-android:[CURRENT-VERSION]'
   implementation 'com.caverock:androidsvg:1.2.2-beta-1'

   implementation 'com.nineoldandroids:library:2.4.0'
}

Second, you must not using something like this as a proguard rule for a library:

-keep class org.apache.commons.io.** { *; }

which means, telling the proguard to not process the library and include the whole library to the release app.

But for androidsvg library, you need to treat is with a special exception. You need to keep the whole library (please read about this issue at Crashes Proguard):

-dontwarn com.caverock.androidsvg.**

-keep class com.caverock.androidsvg.** { *; }

Third, check your image in drawable. Probably you placing the image in the wrong drawable directory.

ישו אוהב אותך
  • 28,609
  • 11
  • 78
  • 96