【问题标题】:Pro-guard Obfuscation not working in android studioPro-guard混淆在android studio中不起作用
【发布时间】:2020-05-26 09:45:30
【问题描述】:

使用最新的 Android Studio 并更新了所有平台(OsX):

构建.gradle:

android {
compileSdkVersion 26
defaultConfig {
    applicationId "com.xxxxxxlxxxxxx.apps.firebase"
    minSdkVersion 16
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:design:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'com.firebase:firebase-jobdispatcher:0.8.5'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Proguard-rules.pro :

-keep public class OpenSource

如您所见,proguard 已启用,并且还给出了仅保留 OpenSource 类的规则。仍然当我构建它的 apk / 签名 apk 时。并在 apk 文件上使用以下命令:

  1. 解压apk
  2. sh Dex2jar.sh classes.dex
  3. 并通过 Jd-GUI 打开输出 jar 文件
  4. 我所有的课程都从 MainActivity 得到,然后全部休息。没有看到混淆工作

很高兴收到您的建议。谢谢。

【问题讨论】:

    标签: android proguard


    【解决方案1】:

    在 Android Studio 中启用 ProGuard。以下是如何在 Android Studio 中启用默认 ProGuard 的示例。

    1) 进入app的build.gradle文件

    2) 启用proguard minifyEnabled trueuseProguard true

    3) 启用shrinkResources true 以通过缩减资源来减小APK 大小。

    4) proguardFiles getDefaultProguardFile('proguard-android.txt') 启用默认值。如果您想使用自己的 proguard 文件,请使用以下规则。

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

    【讨论】:

    • 是的,这也很有帮助。我错过了“useProguard true”。被接受为答案并投票赞成,因为它有帮助,也非常感谢..
    • @sandhyasasane 我需要您关于前台和 JobIntentService 的建议或帮助。你能评论一下这个stackoverflow.com/questions/51627968/…
    【解决方案2】:

    较新的 gradle 插件版本不使用 proguard。它使用 R8 编译器。

    当您使用 Android Gradle 插件 3.4.0 或 更高,插件不再使用 ProGuard 来执行编译时 代码优化。相反,该插件与 R8 编译器一起使用 处理以下编译时任务:

    https://developer.android.com/studio/build/shrink-code

    如果您想使用 proguard(在发布版本中),请在 gradle.properties 中添加以下内容

    android.enableR8=false
    

    并在 build.gradle 中使用以下内容。

    buildTypes {
        release {
            debuggable false
            useProguard true
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    

    【讨论】:

    • 这会导致The option setting 'android.enableR8=false' is deprecated.错误
    猜你喜欢
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    相关资源
    最近更新 更多