2015-01-27 2 views
8

Я использую Android Studio v.1.0 Мой файл сборки:FileNotFoundException на 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' 
    } 
} 

, но когда я пытаюсь сделать сборку выпуска, я получаю сообщение об ошибке: Ошибка: Выполнение не выполнено для задачи ': app: proguardRelease'.

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

Я думаю, что ProGuard-android.txt является частью Android SDK, я прав?

И почему Android Studio не может найти его?

Я также попытался proguard-android.pro - тот же результат

+0

Вы создали proguard-rules.pro файл в корневом каталоге вашего проекта каталог? –

+0

следует добавить его вручную? Можете ли вы, пожалуйста, поделиться точными инструкциями, как это сделать правильно? –

+0

Если у вас нет специальных правил, попробуйте пустой файл или удалите часть ', 'proguard-rules.pro'' – zapl

ответ

3

Я создал свой собственный proguard-android.pro файл и работает правильно для меня:

-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' 

Следующая строка в файле build.gradle вашего модуля приложение показывает сценарий ProGuard необходимо применить к построению релиза. Он имеет два файла:

  1. proguard-android.txt: является андроид ProGuard файл по умолчанию, можно найти в D: \ SDK \ Tools \ Proguard каталог SDK.
  2. 'proguard-rules.pro': В нем содержится специальная программа proguard . Вам необходимо создать этот файл в корневой папке вашего приложения . Вся ваша специальная программа должна быть внутри этот файл.
6

Если вам не нужна какая-либо конкретная конфигурация Proguard:

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

(Возможно, произошло предупреждение)

Или укажите «правила» и поместите его здесь:

.../app/proguard-rules.pro 

Например, я использую «НОЖ» и мои proguard-rules.pro выглядит так:

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

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

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

Или, возможно, вы можете оставить build.gradle файл как есть (если вам не нравится предупреждения)), и просто поместите пустой proguard-rules.pro в это место.

1

проверьте свою «proguard-rules.pro» внутри вашей корневой папки проекта. I ваш проект экспортируется из eclipse, вы должны создать «proguard-rules.pro» внутри корневой папки проекта.

0

Обойти это скачать один из следующих вариантов:

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 

И скопируйте следующие файлы:

tools/hprof-conv 
tools/support/annotations.jar 
tools/proguard 
Смежные вопросы