Я работаю над приложением, которое работает правильно, пока ProGuard был отключен.Затем я пытаюсь уменьшить размер apk и нашел ProGuard в качестве рекомендуемого инструмента .
Когда я включил ProGuard, я получил всего 1153 предупреждений.Затем добавили proguard-rules.txt
для настройки.Я только что добавил фрагмент кода, приведенный в Пример руководства ProGuard для приложения Android .И добавил -ignorewarnings
в конце файла proguard-rules.text
.Затем он скомпилировал, собрал подписанный apk и apk работал без сбоев.
Но есть одна проблема (могут быть и другие нераскрытые проблемы).То есть apk не может установить GCM ID, служба непрерывно отправляет один запрос на сервер, уведомление GCM не получено.Но все эти проблемы решаются в отладочном apk, так как для отладочного apk не включен ProGuard.
Вот мой build.gradle
файл
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion '25.0.2'
defaultConfig {
applicationId "com.example.ett"
minSdkVersion 15
targetSdkVersion 20
versionCode 31
versionName "1.0.18"
multiDexEnabled true
}
buildTypes {
release {
shrinkResources true
minifyEnabled true
useProguard true
zipAlignEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.txt'
}
}
dexOptions {
preDexLibraries = false
incremental true
javaMaxHeapSize "2048M"
}
lintOptions {
// set to true to turn off analysis progress reporting by lint
quiet true
// if true, stop the gradle build if errors are found
abortOnError false
// if true, only report errors
ignoreWarnings true
}
}
dependencies {
compile files('libs/MultipartUtility.jar')
compile files('libs/javax.mail.jar')
compile files('libs/picasso-2.5.0.jar')
compile files('libs/FCJsonParser.jar')
compile files('libs/JSON.jar')
compile files('libs/FCJsonChatParser.jar')
compile files('libs/revmob.jar')
compile files('libs/commons-net-3.6.jar')
compile project(':viewPagerIndicator')
compile project(':connectionclass')
compile project(':emojicons')
compile 'com.android.support:support-v4:23.1.0'
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.android.support:support-annotations:23.1.0'
compile 'com.android.support:recyclerview-v7:23.1.0'
compile 'com.android.support:design:23.1.0'
compile 'com.android.support:cardview-v7:23.1.0'
compile 'com.getbase:floatingactionbutton:1.10.1'
compile 'com.android.support:multidex:1.0.1'
compile 'com.google.android.gms:play-services-location:11.8.0'
compile 'com.google.android.gms:play-services-gcm:11.8.0'
compile 'com.google.android.gms:play-services-analytics:11.8.0'
compile 'com.google.android.gms:play-services-ads:11.8.0'
compile 'com.google.zxing:core:3.2.0'
compile 'com.facebook.android:facebook-android-sdk:4.0.0'
compile 'com.astuetz:pagerslidingtabstrip:1.0.1'
compile 'net.glxn.qrgen:android:2.0'
compile 'org.apmem.tools:layouts:1.10@aar'
compile 'me.dm7.barcodescanner:zbar:1.8.4'
compile 'com.soundcloud.android:android-crop:1.0.0@aar'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.bartoszlipinski.recyclerviewheader:library:1.2.0'
compile 'com.makeramen:roundedimageview:2.2.0'
compile 'de.hdodenhof:circleimageview:2.0.0'
compile 'com.github.danielnilsson9:color-picker-view:1.4.0@aar'
compile 'com.facebook.stetho:stetho:1.3.1'
compile 'com.facebook.stetho:stetho-okhttp3:1.3.1'
compile 'com.squareup.okhttp3:okhttp:3.3.1'
compile 'com.facebook.stetho:stetho-js-rhino:1.3.1'
compile 'com.github.chrisbanes:PhotoView:1.3.0'
compile 'com.github.orangegangsters:swipy:1.2.3@aar'
compile 'com.anjlab.android.iab.v3:library:1.0.44'
}
, а вот мой proguard-rules.txt
:
#-injars bin/classes
-injars libs
#-outjars bin/classes-processed.jar
#-libraryjars /home/adnan/Android/Sdk/platforms/android-23/android.jar
-android
-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*
-keepattributes Signature
-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
-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.content.Context {
public void *(android.view.View);
public void *(android.view.MenuItem);
}
-keepclassmembers class * implements android.os.Parcelable {
static ** CREATOR;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
-dontwarn android.support.**
-ignorewarnings
Как решить эту проблему?Есть ли что-то, что я не упомянул в файле proguard-rules.txt
?Заранее спасибо.Я использовал ProGuard version 6.0.3