2013-07-22 4 views
6

При создании моего андроида проекта, я добавил следующее в файл build.gradle для включения ProGuard:Android Gradle сборка в результате APK содержит как запутывание и не-затемненных классы

buildTypes { 
    release { 
     runProguard true 
     proguardFile 'proguard-project.txt' 
     proguardFile '../common/proguard-shared.txt' 
     proguardFile getDefaultProguardFile('proguard-android.txt') 
    } 
    } 

все строит нормально, НО когда Я разбираю полученный файл dex, оказывается, что и запутанные, и не обфусканные файлы.

Например, как common.Base64, так и common.a существуют, первый не является запутанным, а второй является.

Не уверен, что это связано, но сам проект имеет нестандартную структуру. Это результат того, что у нас большая база данных Android с более чем 40 приложениями для Android. Мы пытаемся создать поток сборки на основе градиента бок о бок существующей сборки на основе eclipse.

Если все идет хорошо, мы намерены изменить структуру файла, чтобы быть более родным градиентом, и начать использовать ароматы и типы сборки, чтобы избавиться от многих из библиотек, которые мы создали, чтобы удовлетворить отсутствие недостатков и таких ,

Проект Е выше опирается на цепочку библиотек, как, что:

Е -> D -> C -> B -> A

например, Проект E зависит от библиотеки D, которая зависит от библиотеки C ... вплоть до A.

ответ

7

Изучив это, я обнаружил, что это проблема, если вы впервые создали без использования proguard, а затем создали он с ним включен. Это связано с инкрементным режимом dex.

Вы можете сделать чистую сборку после включения proguard, и это исправит это.

Редактировать: Я ранее указывал, что вы можете отключить инкрементный режим в dex, но оказывается, что на самом деле это не помогает!

+0

Работает, спасибо, @Xav!. Любой предложенный способ «принудительно» очистить до создания кандидата на выпуск? – Guy

+2

Выполняет ли '' 'грабли очистить сборкуРезависимая'''? –

+0

@ThuyTrinh. Просто убедитесь, что вы выполняете «чистую» для всех зависимостей (т. Е. Если у вас есть проект с несколькими модулями, сначала очистите корневой каталог, а затем выполните сборку «Сбросьте нужный вам подмодуль»). – Guy