2017-07-29 51 views
6

每一件事情做工精細之前設置Android proguard問題:路徑不能爲空或空字符串。路徑= '空'

minifyEnabled true

shrinkResources true

設置這些值之後,每當我跑項目中,我得到這個錯誤:

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 

什麼此錯誤是否意味着錯誤:路徑可能不爲空或空字符串。路徑=「空」 這裏的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 
      } 
     } 

,我試圖把每一個該死的東西,我可以把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.** { 
    *; 
} 

但仍無法運行我應用程序。任何幫助,我哪裏出錯了。

+0

我也堅持這一點。 – Michael

回答

0

好的得到了解決方案。只需更換硬盤codded簽約配置:

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

和而不是創建單獨的signing.properties文件:

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

enter image description here

,並在您使用的gradle。 希望它有幫助!

+0

不解決我的問題。 –

+0

也不適合我。 – ggsrivas

1

兩種解決方案

  • 使用下面的類路徑。 (我是在我使用的版本2.3.2收到此錯誤。)

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

  • 禁用一個臨時的解決辦法分割APK選擇,如果你不能改變的類路徑版本。

+0

任何其他解決方案? – ggsrivas

+0

我已經給你兩個選擇。你還想要多少? –

+1

這兩個選項都是臨時的。我想知道你是否找到了真正的解決方案。 – ggsrivas