Android Studio ProGuard не запускается

В последние несколько дней я переключился с Eclipse на Android Studio и получил больше всего работы. Однако, когда я создаю подписанный APK, кажется, что ProGuard никогда не запускается.

Я использую Мастер создания подписей APK, выбрав "Запустить ProGuard" и указав мой файл proguard.cfg в качестве файла конфигурации. Процесс сборки выполняется без ошибок и генерирует функциональный apk, но apk на 65% больше, чем тот, который генерируется Eclipse. Когда я создаю apk через Android Studio APK Wizard и не выбираю "Run Proguard", полученный apk имеет тот же размер, что и ProGuard. Файлы map.txt, seeds.txt или usage.txt не создаются нигде в моей директории проектов. Я попытался добавить

buildTypes {
    release {
        runProguard true
        proguardFile file('proguard.cfg')
        proguardFile getDefaultProguardFile('project-android.txt')
    }
}

и изменения в файле build.gradle, но это также не повлияло.

Это происходит на Android Studio 0.2.0, хотя я видел такое же поведение на 0.1.9. Я работаю над Windows 7.

Может ли кто-нибудь сказать мне, что может быть? Я был бы рад, если бы мог найти журналы, которые ProGuard должен генерировать.

Ответ 1

К счастью, я нашел решение. Проблема заключалась в том, что перед созданием подписанного apk я изменил имя пакета в AndroidManifest, чтобы перезаписать конкретную сборку в Google Play Store. Однако это изменение имени пакета не переработало все соответствующее имя "import" package.R; " строк по всему коду. Сегодня, после повторного импорта проекта, он больше не будет строить из-за ошибок, пытающихся импортировать R. Как только я изменил все строки импорта, не только мой проект был построен правильно, но и экспорт подписанного apk правильно запускал ProGuard.

Я предполагаю, что Android Studio каким-то образом кэшировала строки "import R", и когда ProGuard пыталась запустить ее, у нее не было этих кешированных значений, а затем разбился. Почему для меня не было ошибок, я не знаю.

Ответ 2

Просто обновите свой build.gradle

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

Подробнее Ссылка. Надеюсь, это поможет вам.

Ответ 3

**in new Gradle system** 

BuildType.runProguard                 ->  minifyEnabled
BuildType.zipAlign                    -> zipAlignEnabled
BuildType.jniDebugBuild               -> jniDebuggable
BuildType.renderscriptDebug           -> renderscriptDebuggable
ProductFlavor.renderscriptSupportMode -> renderscriptSupportModeEnabled
ProductFlavor.renderscriptNdkMode     -> renderscriptNdkModeEnabled

или посетите http://tools.android.com/tech-docs/new-build-system