Problem with proguard for Android: the path cannot be empty or empty. path = "zero"

Every thing works great before installing

minifyEnabled true

and

shrinkResources true

After setting these values, whenever I run the project, I get this error:

Information:Gradle tasks [:app:assembleProdRelease] Error:path may not be null or empty string. path='null' Information:BUILD FAILED Information:Total time: 23.606 secs Information:1 error Information:0 warnings Information:See complete output in console 

What this error means: Error: the path may be empty or empty. path = 'null' Here is build.gradle:

 signingConfigs { release { storeFile file('/home/rishabh/Documents/dekhoJks/release.jks') storePassword "XXXXXXX" keyAlias "XXXXXXXX" keyPassword "XXXXXXXXX" } } buildTypes { release { minifyEnabled true //proguardFiles fileTree(dir: "proguard", include: ["*.pro"]).asList().toArray() proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' shrinkResources true signingConfig signingConfigs.release } } 

And I tried to put every damn thing that I can put in proguard.pro:

 -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers -dontpreverify -verbose -dump class_files.txt -printseeds seeds.txt -printusage unused.txt -printmapping mapping.txt -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -allowaccessmodification -keepattributes *Annotation* -renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable -repackageclasses '' -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService -dontnote com.android.vending.licensing.ILicensingService # Explicitly preserve all serialization members. The Serializable interface # is only a marker interface, so it wouldn't save them. -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } # Preserve all native method names and the names of their classes. -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet, int); } # Preserve static fields of inner classes of R classes that might be accessed # through introspection. -keepclassmembers class **.R$* { public static <fields>; } # Preserve the special static methods that are required in all enumeration classes. -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep public class * { public protected *; } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } ##---------------End: proguard configuration common for all Android apps ---------- #---------------Begin: proguard configuration for support library ---------- -keep class android.support.v4.app.** { *; } -keep interface android.support.v4.app.** { *; } -keep class com.actionbarsherlock.** { *; } -keep interface com.actionbarsherlock.** { *; } # The support library contains references to newer platform versions. # Don't warn about those in case this app is linking against an older # platform version. We know about them, and they are safe. -dontwarn android.support.** -dontwarn com.google.ads.** ##---------------End: proguard configuration for Gson ---------- ##---------------Begin: proguard configuration for Gson ---------- # Gson uses generic type information stored in a class file when working with fields. Proguard # removes such information by default, so configure it to keep all of it. -keepattributes Signature # For using GSON @Expose annotation -keepattributes *Annotation* # Gson specific classes -keep class sun.misc.Unsafe { *; } #-keep class com.google.gson.stream.** { *; } # Application classes that will be serialized/deserialized over Gson -keep class com.example.model.** { *; } ##---------------End: proguard configuration for Gson ---------- # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} -keepclassmembers class android.support.design.internal.BottomNavigationMenuView { boolean mShiftingMode; } -dontwarn com.fasterxml.** -dontwarn okio.** -dontwarn retrofit2.** -dontwarn com.fasterxml.jackson.databind.** # Basic ProGuard rules for Firebase Android SDK 2.0.0+ -keep class com.firebase.** { *; } -keep class org.apache.** { *; } -keepnames class com.fasterxml.jackson.** { *; } -keepnames class javax.servlet.** { *; } -keepnames class org.ietf.jgss.** { *; } -dontwarn org.apache.** -dontwarn org.w3c.dom.** -dontwarn com.firebase.ui.** -keepattributes Signature -dontwarn com.googlecode.mp4parser.** -dontwarn org.mp4parser.aspectj.runtime.reflect.** -keep class * implements com.coremedia.iso.boxes.Box { *; } -dontwarn com.coremedia.iso.boxes.** -dontwarn com.googlecode.mp4parser.authoring.tracks.mjpeg.** -dontwarn com.googlecode.mp4parser.authoring.tracks.ttml.** -keep class com.facebook.** { *; } 

But still can not start my application. Any help that I'm wrong in.

+7
android proguard android-proguard
source share
2 answers

Good solution. Just replace your hard-signed config:

 release { storeFile file('/home/rishabh/Documents/dekhoJks/release.jks') storePassword "XXXXXXX" keyAlias "XXXXXXXX" keyPassword "XXXXXXXXX" } 

and instead create a separate .properties signature file:

 STORE_FILE=/home/XXX/XXX/XXX STORE_PASSWORD=XXXXXX KEY_ALIAS=XXXXXXXX KEY_PASSWORD=XXXXXXXXX 

enter image description here

and use in gradle. Hope this helps!

0
source share

Two solutions

  • Use the following class path. (I was getting this error when I used version 2.3.2.)

    classpath 'com.android.tools.build:gradle:2.2.2'

  • Disable the split apk option for a temporary fix if you cannot change the version of the class path.

+1
source share

All Articles