调试版本中的android proguard?

时间:2016-03-17 13:49:09

标签: android android-proguard android-debug

我有一个Android应用程序,它支持android> = 4。 在调试编译中,它具有> 65k方法,因此它是multidex。 在发布中,我使用proguard,它有38k方法,而不是multidex。 我如何开发一个应用程序,它在调试模式下可能崩溃,只是因为超过65k的方法?

我可以在调试版本中使用proguard,但是没有看到有人这样做+使用proguard会花费更多的时间进行编译 你会如何处理这种情况?

PS 我的app.gradle看起来像这样(依赖的部分):

        compile project(':signalr-client-sdk-android')
        compile fileTree(include: ['*.jar'], dir: 'libs')

        compile 'com.android.support:recyclerview-v7:+'
        compile "com.nostra13.universalimageloader:universal-image-loader:${UNIVERSAL_IMAGE_LOADER}"
        compile "de.hdodenhof:circleimageview:${CIRCLE_IMAGE_VER}"
        compile "com.pixplicity.multiviewpager:library:${MULTIVIEW_PAGER_VER}"
        compile "com.michaelpardo:activeandroid:${ACTIVE_ANDROID_VER}"
        compile "com.squareup.okhttp:okhttp:${OKHTTP_VER}"
        compile "com.rockerhieu.emojicon:library:${EMOJI_VERSION}"
        compile "com.facebook.android:facebook-android-sdk:${FACEBOOK_SDK_VER}"
        compile "com.makeramen:roundedimageview:${ROUNDED_IMAGEVIEW_VER}"
        compile 'com.github.orangegangsters:swipy:1.2.0@aar'

        compile "com.google.android.gms:play-services-gcm:${GSM_VER}"
        compile "com.google.android.gms:play-services-analytics:${ANALITICS_VER}"

        compile "com.flurry.android:analytics:${FLURRY_VER}"

        compile 'com.supersonic.sdk:mediationsdk:6.3.6@jar'

        //effects apng tool
        compile project(':android_api')
        compile project(':flingCards')

        compile files('libs/protobuf-java-2.6.1.jar')

我使用了所有这些库

2 个答案:

答案 0 :(得分:2)

我在调试版本中使用proguard。 Usualy我的build.gradle看起来像这样:

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

注意调试的不同proguard文件(proguard-rules-debug.pro),其中添加了-dontobfuscate选项。

使用proguard编译它所需的时间大约是5-10%,这对我来说是可以接受的。我没有使用即时运行,所以我不知道它是如何受此影响的。

答案 1 :(得分:1)

您也可以在调试中使用ProGuard。将其添加到您的buildTypes

    debug {
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        minifyEnabled true
        debuggable true
        zipAlignEnabled true
        jniDebuggable true
    }

在您的应用内build.gradle