2014-12-16 3 views
2

Я просмотрел документацию, которая ищет способ отключить dexguard при работе с градиентом, но с плагином: «dexguard».Как отключить Dexguard?

Я попытался изменить proguardFile getDefaultDexGuardFile ('dexguard-debug.pro') ничего не делать, к сожалению, не повезло. Мне нужно установить функциональность dexguard для моего функционального тестирования MonkeyTalk, который теперь не может управлять apk.

Как отключить функциональность dexguard?

ответ

4

Обновление от ответа zatziky для текущей Android Gradle Plugin (v1.0 +) и плагин Dexguard (6.1. +)

Чтобы создать переключатель плагинов dexguard, вы можете сделать следующее:

В корне build.gradle добавить свойство к вашему ext (или создать его, если это еще не сделано, see here why you would do that)

ext { 
    enableDexGuardPlugin = false 
    .... 
} 

В вашем приложении сборки.Gradle добавить плагин, как это:

apply plugin: 'com.android.application' 
if(rootProject.ext.enableDexGuardPlugin) { 
    apply plugin: 'dexguard' 
} 

и если у вас есть проекты библиотеки сделать это как этот

apply plugin: 'com.android.library' 
if(rootProject.ext.enableDexGuardPlugin) { 
    apply plugin: 'dexguard' 
} 

Удалить все Proguard конфиги из ваших отладочных-типов (особенно getDefaultDexGuardFile('dexguard-release.pro')), если вы не нуждаетесь в них , Unfortunatly по крайней мере LIB проектов, все стро-типы строят даже в assembleDebug, так что вы должны предоставить заглушки для getDefaultDexGuardFile как zatziky сказал:

private File getDefaultDexGuardFile(String name) { new File(name) } 

Вы можете добавить это в корне build.gradle так каждый сценарий есть это.

Теперь, если вы ожидали огромных преимуществ от эффективности, вы можете быть разочарованы. Ключ должен отключить ВСЕ minifyEnabled на отладочных сборках, так как, как уже говорилось ранее, андроид не работает и строит все типы сборки (по крайней мере, с помощью libs). Вы можете использовать свойство выше для него: enableDexGuardPlugin

release { 
    ... 
    minifyEnabled rootProject.ext.enableDexGuardPlugin 
    ... 
} 
2

Невозможно включить плагин dexguard.

Это обходной путь, который Эрик Ла Фортуна отправить меня и он работает (Dexguard 6.x):

Для отключения DexGuard, вам нужно будет вернуться к Android плагин. Вы можете создать отдельный файл buidd Gradle. Кроме того, вы можете выбрать предпочтительный плагин с Groovy. Например. в

build.gradle: 
boolean dexguard = ...... 

apply plugin: dexguard ? 'dexguard' : 'android' 

Вы также можете вызвать метод полезности getDefaultDexGuardFile таким же образом:

runProguard true 
proguardFile dexguard ? 
getDefaultDexGuardFile('dexguard-release.pro') : 
getDefaultProguardFile('proguard-android.txt') 

Вам необходимо определить фиктивную версию этого метода в сборке файл, в случае выбора стандартного Android-плагина. Это не вызывается в любом случае, но он решает недостающее определение метода для стандартного плагина:

private File getDefaultDexGuardFile(String name) { new File(name) } 
+0

Примечания: этот ответ является устаревшим, поскольку dexguard в настоящее время не распространяется андроид плагина, но используется как автономные: 'применить плагин:«»com.android.application применять плагин: 'dexguard'' – for3st

+0

@ for3st Привет, человек, надеюсь, что ваше решение работает. Я отметил его как Accepted. – zatziky

2

В последних версиях DexGuard вы можете отключить обработку для конкретной сборки вариантов просто не перечисляя «proguardFile 'линий.

Так, например, чтобы отключить его для отладки сборки:

buildTypes { 
    debug { 
    } 
    release { 
     proguardFile getDefaultDexGuardFile('dexguard-release.pro') 
     proguardFile 'dexguard-project.txt' 
     proguardFile 'proguard-project.txt' 
    } 
} 

Редактировать - все proguardFiles должны исчезнуть, чтобы он работал

+0

У меня нет времени проверить его сейчас. Если кто-то еще подтвердит, что это решение работает, я проверю этот ответ как правильный. Хорошего дня. – zatziky

+0

Я проверил это. – Patrick

Смежные вопросы