java - Android - 启用 Proguard 后应用程序崩溃

标签 java android

<分区>

当我使用 Proguard 发布应用程序时,运行 apk 文件然后崩溃。这是我的 build.grade 和 Proguard-rules.pro 文件。

build.grade

    apply plugin: 'com.android.application'
    apply plugin: 'android-apt'


    android {
        compileSdkVersion 24
        buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "cheng.cunghoangdao.cungbachduong"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.0.0'
    compile 'com.android.support:design:24.0.0'
    compile 'com.github.noobknight:app:1.0.0'
    compile 'com.jakewharton:butterknife:8.1.0'
    apt 'com.jakewharton:butterknife-compiler:8.1.0'
    compile 'com.android.support:cardview-v7:24.0.0'
    compile 'org.jsoup:jsoup:1.9.1'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.jpardogo.googleprogressbar:library:1.2.0'
    compile files('libs/apache-commons-lang.jar')
    compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.5.0'
    compile 'com.facebook.android:facebook-android-sdk:4.+'
    compile 'com.google.android.gms:play-services-analytics:9.2.0'
    compile 'com.google.firebase:firebase-messaging:9.2.0'
    compile project(':library')
}
apply plugin: 'com.google.gms.google-services'

Proguard-rules.pro

-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-keepattributes Signature
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-dontwarn android.support.**
-dontwarn com.instagram.common.json.**
-dontwarn com.fasterxml.jackson.databind.ext.DOMSerializer
-dontwarn com.squareup.javawriter.JavaWriter
-dontwarn com.google.common.primitives.UnsignedBytes*
-dontwarn sun.misc.Unsafe
-dontwarn javax.annotation.**
-dontwarn com.squareup.picasso.**
-dontwarn okio.Okio.**
-dontoptimize
-dontpreverify
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-keepattributes *Annotation*
-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 com.google.vending.licensing.ILicensingService
-keep public class com.android.vending.licensing.ILicensingService
-keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.app.Fragment

-keep class android.support.v7.internal.** { *; }
-keep interface android.support.v7.internal.** { *; }
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }

# Facebook library
-keep class com.facebook.** {
   *;
}

-dontwarn com.squareup.okhttp.**


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

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

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

-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclasseswithmembernames class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembernames class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

 -keepclassmembers public class * extends android.view.View {
  void set*(***);
  *** get*();
 }

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

-keepclassmembers class **.R$* {
  public static <fields>;
}

我认为 proguard-reles.pro 中的配置缺少库。请给我建议...

最佳答案

Proguard 会删除未明确指定的类

使用这个:

-keep class xxxx, keep class yyyy, etc

检查所有类。

关于java - Android - 启用 Proguard 后应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38237492/

相关文章:

javascript - 按钮被停用和禁用之间有区别吗?

android - Android 上简单游戏的设计决策/建议

java - 如何将图像文件从图库移动到另一个文件夹

android - 如何在 Canvas 内使用动画框架?

java - java中的代理设置和取消设置

java - 如何将bat命令转换为java命令?

java - 解析文档、搜索字符串并用 Java 替换文档中最快/最有效的方法

java - 类 java.util.ArrayList 具有泛型类型参数,请使用 GenericTypeIndicator 代替

php - 如何通过php从mysql数据库中获取所有产品类别并返回json数组

android - 在启动 Intent 之前,如何知道系统在android中选择了多少隐式 Intent