2017-01-02 5 views
1

ich eine App in Android Gebäude bin, ist dies die build.gradle Datei:Ausführung fehlgeschlagen für Aufgabe ‚: App: transformClassesAndResourcesWithProguardForRelease‘ Android

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.1" 
    defaultConfig { 
     applicationId "myApp" 
     minSdkVersion 21 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
     multiDexEnabled true 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    packagingOptions { 
     packagingOptions { 
      exclude 'META-INF/DEPENDENCIES.txt' 
      exclude 'META-INF/LICENSE.txt' 
      exclude 'META-INF/NOTICE.txt' 
      exclude 'META-INF/NOTICE' 
      exclude 'META-INF/LICENSE' 
      exclude 'META-INF/DEPENDENCIES' 
      exclude 'META-INF/notice.txt' 
      exclude 'META-INF/license.txt' 
      exclude 'META-INF/dependencies.txt' 
      exclude 'META-INF/LGPL2.1' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile project(':geth') 
    compile 'com.android.volley:volley:1.0.0' 
    compile 'com.google.android.gms:play-services-maps:10.0.1' 
    compile 'com.android.support:appcompat-v7:25.1.0' 
    compile 'com.android.support:support-v4:25.1.0' 
    compile 'com.android.support:design:25.1.0' 
    compile 'com.android.support:multidex:1.0.1' 
    compile 'org.web3j:core-android:1.1.0' 
    testCompile 'junit:junit:4.12' 
} 

Wenn ich versuche, meine Anwendung zu erstellen, erhalte ich die folgenden Warnungen die sich ergeben, zu einem gescheiterten Build:

http://pastebin.com/EhMr66Yg

Sollte ich Regeln hinzufügen -dontwarn für diese Warnungen? Was verursacht sie?

Hat nicht die Build wegen der 67 Warnungen oder wegen der zuletzt:

„gab es 1 ungelöst Verweise auf Bibliotheksklasse Mitglieder Sie müssen wahrscheinlich die Bibliothek Versionen aktualisieren..“

Danke.

+0

das Ereignisprotokoll überprüfen, um zu sehen, was fehlgeschlagen. Es befindet sich in Android Studio rechts unten. –

Antwort

1

Das Problem ist mit dem Verknüpfungsproblem der Proguard. ProGuard optimiert den Bytecode, entfernt nicht verwendete Codeanweisungen und verschleiert die verbleibenden Klassen, Felder und Methoden mit kurzen Namen. Der verschleierte Code macht Ihren APK schwierig Reverse Engineering, was besonders wertvoll ist, wenn Ihre App sicherheitsempfindlichen Funktionen verwendet

Für weitere Informationen von proguard Blick hier: https://developer.android.com/studio/build/shrink-code.html

Die proguard spezifische Regeln für jede Bibliothek verwendet in Ihrem build.gradle sollte in "proguard-rules.pro" -Datei platziert werden, wie im Screenshot gezeigt.

enter image description here

Hinweis: Die proguard Datei geändert werden kann.

Kommen zu den Regeln geschrieben werden.

-keep class android.support.v4.app.** { *; } 
-keep interface android.support.v4.app.** { *; } 
-keep class com.actionbarsherlock.** { *; } 
-keep interface com.actionbarsherlock.** { *; } 
-keep class com.android.volley.** { *; } 
-keep interface com.android.volley.** { *; } 
-keep class org.apache.commons.logging.** 
-keepattributes *Annotation* 

-dontwarn org.apache.** 

-keepattributes Annotation,EnclosingMethod,Signature 
-keepnames class com.fasterxml.jackson.* { ; } 
-dontwarn com.fasterxml.jackson.databind. 
-keep class org.codehaus.* { ; } 
-keepclassmembers public final enum org.codehaus.jackson.annotate.JsonAutoDetect$Visibility { 
public static final org.codehaus.jackson.annotate.JsonAutoDetect$Visibility *; } 
-keep public class your.class.* { 
public void set_(_); 
public ** get*(); 
} 

HINWEIS: Weitere Bibliothek proguard Regeln verwenden https://github.com/krschultz/android-proguard-snippets

0

Sie haben folgende zu verwenden.

-dontwarn com.squareup.** 
-dontwarn com.fasterxml.** 

und andere Klasse, die die warning.These Klassen verursachen selbst verschleiert werden kann, so dass Sie nicht pro-Wache über them.Hope gelten müssen diese für Sie arbeiten.

Verwandte Themen