Pro-guard混淆功能无法在android studio中运行

时间:2018-08-07 11:11:47

标签: android proguard

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

Build.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中获取所有我的所有类,并照原样休息。没有发现混淆处理有效

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

2 个答案:

答案 0 :(得分:2)

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

1)转到应用程序的for commit in $(git log --all --author="email-address" --pretty=format:"%h"); do git format-patch $commit -1 done 文件

2)启用保护者build.gradleminifyEnabled true

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

4)shrinkResources true以启用默认值。如果要使用自己的proguard文件,请使用以下规则。

proguardFiles getDefaultProguardFile('proguard-android.txt')

答案 1 :(得分: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'
    }
}