Как использовать ProGuard в Android Studio?

Это мой первый проект в Android Studio и код моего приложения не обфусцирован. Im использует эту конфигурацию в сборке.файл gradle: enter image description here

Я использую Build > Generate Signed APK... с помощью ProGuard проверено. И, когда я протестировал использование Apk_OneClick.v4.2, мой код совершенно легок для чтения:

enter image description here

пожалуйста, помогите мне. :(

5 ответов


вы, вероятно, на самом деле не подписываете сборку выпуска APK с помощью мастера подписи. Вы можете либо создать релиз APK из командной строки с помощью команды:

./gradlew assembleRelease

или вы можете выбрать вариант выхода из Построить Варианты просмотр и построение его из GUI:

IDE main window showing Build Variants


вы можете настроить сборку.файл gradle для реализации proguard. Это может быть модульный уровень или уровень проекта.

 buildTypes {

    debug {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'

    }

}

показанная конфигурация для уровня отладки, но вы можете написать, что у вас есть вкусы сборки, как показано ниже внутри buildTypes:

    myproductionbuild{
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }

лучше иметь отладку с minifyEnabled false и productionbuild и другие сборки как minifyEnabled true.

скопируйте правила proguard.txt-файл в корневой папке модуля или проекта как

$YOUR_PROJECT_DIR\YoutProject\yourmodule\proguard-rules.txt

вы можете изменить имя файла, как вы хотите. После настройки используйте один из трех вариантов, доступных для создания сборки в соответствии с buildType

  1. перейдите к задаче gradle в правой панели и найдите assembleRelease/assemble(#your_defined_buildtype) в разделе задачи модуля

  2. перейдите к варианту сборки в левой панели и выберите сборку из выпадающего списка

  3. перейдите в корневой каталог проекта в Проводнике и откройте cmd / terminal и запустите

Linux ./gradlew assembleRelease or assemble(#your_defined_buildtype)

Windows gradlew assembleRelease or assemble(#your_defined_buildtype)

вы можете найти apk в каталоге модуля / сборки.

больше о конфигурации и расположении файлов proguard доступно по ссылке

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard


NB.: Теперь вместо

runProguard false

вам понадобится

minifyEnabled false

попробуйте переименовать свои правила proguard.txt 'файл в' proguard-android.txt "и удалите ссылку на" proguard-rules.txt' в вашем файле gradle. The getDefaultProguardFile(...) вызов ссылается на другой файл proguard по умолчанию, предоставленный Google, а не в вашем проекте. Поэтому удалите и это, чтобы здесь файл gradle читал:

buildTypes {
    release {
        runProguard true
        proguardFile 'proguard-android.txt'
    }
}

другие ответы здесь-отличные ссылки на использование proguard. Тем не менее, я не видел, чтобы обсуждалась проблема, с которой я столкнулся, это был ум. После создания подписанного выпуска .apk, он помещен в /release папка в вашем приложении, но мое приложение имело apk, которого не было в . Следовательно, я потратил часы на декомпиляцию неправильного apk, задаваясь вопросом, почему мои изменения proguard не влияют. Надеюсь, это кому-то поможет!