Как включить обфускацию ProGuard в Android Studio?

Мне нужно защитить свое приложение, включив Obfuscation Proguard в Android Studio. Я искал процесс его применения, но я не получил четкого решения. Когда я пытаюсь, я всегда получаю сообщение об ошибке. Так может ли кто-нибудь сказать мне четкие шаги, чтобы применить его в моем приложении?

Я делаю это следующими шагами:

  • В Android Studio откройте проект Android.

  • Изменить на проект.

  • Измените следующую строку:

    minifyEnable false до minifyEnable true

  • Установить правила ProGuard (необязательно)

    4.1 В представлении проекта выберите файл proguard-rules.pro.

    4.2 Добавьте в следующие строки, чтобы сообщить ProGuard не запутывать определенные классы.

    -keepclassmembers class com.dom925.xxxx 
    {
      public *
    }
    

Ошибка, которую я получаю, выполнив следующие шаги:

Ошибка: выполнение выполнено для задачи ': app: packageRelease'. Невозможно вычислить хэш D:\Android\Pojectname\app\build\intermediates\classes-proguard\release\classes.jar

Ответы

Ответ 1

Я понял проблему:

Откройте proguard-rules.pro для своего проекта и добавьте его внизу:

-dontwarn java.nio.file.Files
-dontwarn java.nio.file.Path
-dontwarn java.nio.file.OpenOption
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement

В основном, как я решил это, я попытался запустить свое приложение в режиме "выпуска" и получил кучу ошибок, похожих на этого парня: https://github.com/square/okio/issues/144

Я в значительной степени следовал тому, что он сказал, и исправил это.

Надеюсь, что это может помочь другим в создании их APK!

посетите более подробно здесь:

Ошибка: не удалось выполнить задачу & # 39;: app: packageRelease & # 39 ;. & GT; Невозможно вычислить хэш /../AndroidStudioProjects/../classes.jar

Ответ 2

Чтобы включить ProGuard в Android Studio.

Ниже приведен пример включения ProGuard по умолчанию в Android Studio.

  1. Перейдите в файл build.gradle приложения
  2. включить minifyEnabled true
  3. включить shrinkResources true, чтобы уменьшить размер APK
  4. proguardFiles getDefaultProguardFile('proguard-android.txt') включить по умолчанию. Если вы хотите использовать свой собственный файл proguard, используйте приведенные ниже правила.

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

Ссылка с настройками ProGuard для Android и другими настройками доступна по следующим ссылкам:

Для более подробной информации перейдите по этой ссылке

Ответ 3

если вы создаете проект Android с помощью jack, он автоматически выполняет сжатие, запутывание, переупаковку и мультидекс. Просто добавьте ниже в:

defaultConfig {
       jackOptions {
            enabled true
        }        
    }

и в типах сборки упомяните файл проекта proguard:

buildTypes {
        release {
            // Jack build environment does not require minifyEnabled or shrinkResources.
            // Conceptually, the jack compiler consolidates the functionality of javac, ProGuard, and dex in a single conversion step
            //minifyEnabled = true      
            //shrinkResources true

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
       }

       debug {
...................
        }
    } 

Чтобы отключить обфускацию ProGuard, необходимо добавить строку ниже в ваш файл proguard-project.txt

####No obfuscation
-dontobfuscate