2016-07-04 18 views
-3

Ich bin vergeblich versucht, eine signierte APK zu generieren.Android - Erstellen von signierten APK mit Proguard

Meine proguard-rules.pro Datei:

-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontpreverify 
-verbose 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 

-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 

-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); 
} 

-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 

-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

# ================ Google Play Services ================ 
-keep class * extends java.util.ListResourceBundle { 
    protected Object[][] getContents(); 
} 

-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { 
    public static final *** NULL; 
} 

-keepnames @com.google.android.gms.common.annotation.KeepName class * 
-keepclassmembernames class * { 
    @com.google.android.gms.common.annotation.KeepName *; 
} 

-keepnames class * implements android.os.Parcelable { 
    public static final ** CREATOR; 
} 
# ====================================================== 

# ============ Corrige erros de compilação ============= 
-dontwarn android.support.** 
-keeppackagenames org.jsoup.nodes 
-dontwarn okio.** 
# ====================================================== 

# ==== crashlytics ==== 
-keepattributes *Annotation* 
-keepattributes SourceFile,LineNumberTable 
-keep public class * extends java.lang.Exception 
# ===================== 

Meine Abhängigkeiten:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.4.0' 
    compile 'com.google.android.gms:play-services-ads:9.2.0' 
    compile 'com.google.android.gms:play-services-analytics:9.2.0' 
    compile 'com.android.support:design:23.4.0' 
    compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
     transitive = true; 
    } 
    compile 'org.jsoup:jsoup:1.9.2' 
    compile 'com.github.hotchemi:android-rate:1.0.1' 
    compile 'com.github.curioustechizen.android-ago:library:1.3.2' 
    compile 'com.jakewharton:butterknife:8.0.1' 
    apt 'com.jakewharton:butterknife-compiler:8.0.1' 
    compile 'com.amitshekhar.android:android-networking:0.0.1' 
    compile 'com.squareup.picasso:picasso:2.5.2' 
} 

Der Build-Fehler:

Error:Execution failed for task ':mobile:transformClassesAndResourcesWithProguardForRelease'. 
> java.io.IOException: Please correct the above warnings first. 
:mobile:transformClassesAndResourcesWithProguardForRelease FAILED 
Warning:Exception while processing task java.io.IOException: Please correct the above warnings first. 

Antwort

1

Wenn alles, was Sie tun möchten, eine signierte APK erstellen, fügen Sie einfach die

-ignorewarnings 

Flagge zu Ihrer proguard-rules.pro Datei. Dadurch werden alle von Proguard ausgegebenen Warnungen ignoriert und einfach das signierte APK generiert.

Es ist jedoch wahrscheinlich, dass das Ignorieren aller Warnungen auf diese Weise mehrere unbeabsichtigte Konsequenzen haben wird (kritische Klassen werden entfernt, Funktionalität beeinträchtigt usw.). Ich fordere Sie nachdrücklich auf, jede der abgegebenen Warnungen zu prüfen und sie getrennt zu behandeln. Entweder vor jeden der Warnungen in der vorgeschriebenen Art und Weise handhaben oder verwenden, um die

-dontwarn 

Flags für die bestimmte Klasse oder Bibliothek, wenn die Warnung unecht ist.

Iterieren Sie den Prozess, bis alle diese Nebenwirkungen beseitigt sind, und Sie werden eine Proguard-optimierte APK ohne Probleme haben.

+0

Irgendwie hast du mir geholfen zu denken, – Josinaldo

+0

ok, in meinem Fall habe ich beschlossen, "-dontwarn com.squadeup.okhttp. **" (lib Picasso) in der Datei "proguard-rules.pro" – Josinaldo

+0

Sind Sie in der Lage zu bauen eine signierte APK ohne irgendwelche Nebenwirkungen? –

Verwandte Themen