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

问题描述 投票:0回答:3

使用最新的 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

如您所见,混淆器已启用,并且还给出了仅保留

OpenSource
类的规则。仍然当我构建它的 apk/签名的 apk 时。并在 apk 文件上使用以下命令:

  1. 解压apk
  2. sh Dex2jar.sh 类.dex
  3. 并使用 Jd-GUI 打开输出 jar 文件
  4. 我直接从 MainActivity 获取所有课程并按原样休息。没有看到任何混淆工作

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

android proguard
3个回答
12
投票

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

1) 前往app

build.gradle
文件

2) 启用 proguard

minifyEnabled true
useProguard 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'
    }
}

0
投票

较新的 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'
    }
}

0
投票

如果您认为您所做的一切都是正确的(默认 proguard-rules、minifyEnabled = true 等),但类和方法没有被混淆,请检查您尝试混淆的构建变体是否不可调试(显然是可调试的)构建未正确混淆)

© www.soinside.com 2019 - 2024. All rights reserved.