Pro-guard 混淆在 android studio 中不起作用

san*_*ane 3 android proguard

使用最新的 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'
}
Run Code Online (Sandbox Code Playgroud)

Proguard-rules.pro :

-keep public class OpenSource
Run Code Online (Sandbox Code Playgroud)

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

  1. 解压apk
  2. sh Dex2jar.sh classes.dex
  3. 并通过使用 Jd-GUI 打开输出 jar 文件
  4. 我从 MainActivity 中获得了我所有的类,然后就这样休息了。没有看到混淆工作

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

Hei*_*erg 8

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

1)转到build.gradle应用程序的文件

2)启用proguardminifyEnabled 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'
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,这也有帮助并且有效。我缺少“useProguard true”。接受作为答案并投票,因为它有帮助,也非常感谢.. (3认同)