2017-07-29 62 views
6

Każda rzecz pracy w porządku przed ustawieniemProblemy z programem Android proguard: ścieżka nie może być pusta lub mieć pusty ciąg. path = 'null'

minifyEnabled true

i

shrinkResources true

Po ustawieniu tych wartości, gdy uruchamiam projekt i dostać ten błąd:

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 

Co ten błąd oznacza: Błąd: ścieżka nie może być pusta lub mieć pusty łańcuch. path = 'null' Oto 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 
      } 
     } 

i starałem się umieścić każdą cholerstwo mogę umieścić w 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.** { 
    *; 
} 

Ale nadal nie można uruchomić mój aplikacja. Każda pomoc, gdzie idę źle.

+0

Utknąłem na tym. – Michael

Odpowiedz

0

Dobra rozwiązanie. Wystarczy wymienić dysk codded podpisu config:

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

i zamiast tego utworzyć oddzielne signing.properties plik:

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

enter image description here

i używać w Gradle. Mam nadzieję, że to pomoże!

+0

Nie rozwiązuje problemu po mojej stronie. –

+0

nie działa również dla mnie. – ggsrivas

1

dwa rozwiązania

  • Użyj następującej ścieżki klasy. (I był już ten błąd, gdy używałem wersji 2.3.2.)

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

  • Wyłącz opcję Podział apk dla tymczasowego poprawki, jeśli nie można zmienić wersję ścieżce klasy.

+0

jakieś inne rozwiązanie? – ggsrivas

+0

Podałem już dwie opcje. Ile jeszcze chcesz? –

+1

Obie te opcje są tymczasowe. Zastanawiałem się, czy znalazłeś jakieś prawdziwe rozwiązanie. – ggsrivas