私はAndroid Studio v.1.0私のビルドファイルを使用しています:
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(ファイルが見つかりません)
Proguard-Android.txtはAndroid SDKの一部だと思いますが、正しいですか?
そして、なぜAndroid Studioはそれを見つけることができないのですか?
私もproguard-Android.proを試しました-同じ結果
私は自分の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.** { *; }
特定の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を配置することもできます。
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
アプリモジュールのbuild.gradleファイルの次の行は、proguardのスクリプトをリリースビルドに適用する必要があることを示しています。 2つのファイルがあります。
proguard-Android.txt
:はデフォルトのAndroid proguardファイルで、SDKのD:\ SDK\tools\proguardディレクトリにあります。ルートプロジェクトフォルダ内の「proguard-rules.pro」を確認してください。プロジェクトをEclipseからエクスポートする場合は、ルートプロジェクトフォルダー内に「proguard-rules.pro」を作成する必要があります。
回避策は、次のいずれかをダウンロードすることです。
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
この回答が将来役立つことを願っています
GoTobuild.gradle(Module:app)
この部分をから削除buildTypes
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}