2015-01-27 22 views
8

sto usando Studio Android v.1.0 La mia build file:FileNotFoundException in archivio proguard-rules.pro

buildTypes { 

    debug { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 

    } 

    release { 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 

ma quando provo a fare una build di rilascio, ottengo un errore: Errore: Esecuzione fallita per task ': app: proguardRelease'.

java.io.FileNotFoundException: F:....\app\proguard-rules.pro (File not found)

Penso che proguard-android.txt sia una parte dell'SDK di Android, ho ragione?

E perché Android Studio non riesce a trovarlo?

Ho anche provato proguard-android.pro - lo stesso risultato

+0

Avete creato il file proguard-rules.pro nella directory principale del progetto directory? –

+0

dovrei aggiungerlo manualmente? Puoi per favore condividere le istruzioni esatte come farlo correttamente? –

+0

Se non si hanno regole speciali, provare un file vuoto o rimuovere la parte ', 'proguard-rules.pro'' – zapl

risposta

3

Ho creato il mio file proguard-android.pro e che funzioni correttamente per me:

-dontwarn org.apache.commons.** 
-dontwarn com.google.** 
-dontwarn com.j256.ormlite** 
-dontwarn org.apache.http** 

-keepattributes SourceFile,LineNumberTable 
-keep class com.j256.** 
-keepclassmembers class com.j256.** { *; } 
-keep enum com.j256.** 
-keepclassmembers enum com.j256.** { *; } 
-keep interface com.j256.** 
-keepclassmembers interface com.j256.** { *; } 

-keepattributes Signature 
# GSON Library 
# 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.google.gson.examples.android.model.** { *; } 

# Google Map 
-keep class com.google.android.gms.maps.** { *; } 
-keep interface com.google.android.gms.maps.** { *; } 
2
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 

seguente riga nel file di build.gradle del modulo applicazione indica lo script di Proguard ha bisogno di applicare alla build di rilascio. Ha due file:

  1. proguard-android.txt: è il file Proguard Android di default, può essere trovano in D: \ SDK \ Tools \ Proguard directory di SDK.
  2. 'proguard-rules.pro': Contiene l'applicazione specifica Proguard script. È necessario creare questo file nella cartella principale dell'applicazione . Tutti i proguard specifici per le applicazioni devono trovarsi all'interno del file .
6

Se non avete bisogno di alcuna configurazione specifica ProGuard:

buildTypes { 
    release { 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt') 
    } 
} 

(Potrebbe verificarsi l'avviso)

Oppure specificare "regole" e metterlo qui:

.../app/proguard-rules.pro 

Per esempio io uso "Coltello da burro" e il mio aspetto proguard-rules.pro come:

-keep class butterknife.** { *; } 
-dontwarn butterknife.internal.** 
-keep class **$$ViewInjector { *; } 

-keepclasseswithmembernames class * { 
    @butterknife.* <fields>; 
} 

-keepclasseswithmembernames class * { 
    @butterknife.* <methods>; 
} 

O, forse è possibile lasciare il file build.gradle così com'è (se non ti piace avvertenze)), E basta mettere un proguard-rules.pro vuoto in quella posizione.

1

controllate il vostro 'proguard-rules.pro' all'interno della cartella principale del progetto. Il tuo progetto esportato da Eclipse devi creare 'proguard-rules.pro' nella cartella del progetto root.

0

Una soluzione è quella di scaricare una delle seguenti opzioni:

http://dl.google.com/android/android-sdk_r22.6.2-linux.tgz 
http://dl.google.com/android/android-sdk_r22.6.2-windows.zip 
http://dl.google.com/android/android-sdk_r22.6.2-macosx.zip 

e copiare i seguenti file:

tools/hprof-conv 
tools/support/annotations.jar 
tools/proguard 
Problemi correlati