2015-06-02 2 views

ответ

3

Я думаю, было бы проще, если бы вы установили логическое значение на вариантах/вариантах сборки, на которых вы запускаете ProGuard.

Например: если вы запустите ProGuard на Release и Балетмейстер, но не на Debug, установить логическую переменную истина о выпуске и постановке, но ложна на отладку. This may help

+0

Мне нравится этот ответ над отражением – Petro

+0

согласился, что это, конечно, лучший подход. Просто установите переменную. но, честно говоря, он спросил о времени выполнения. установка buildConfigField будет определять конечное поле во время компиляции. –

+0

Спасибо, в то время как Сэм Дозор ответил прямо, что я спросил, это лучший вариант. Я ценю это. – Hulabaloo

2

Это немного обходное решение, но есть несколько путей, по которым отражение решит это.

Один из способов - сначала определить класс, который запутывается/минимизируется в случае прогард. Итак, скажите, что у вас есть класс com.package.Thing, что при включении proguard получает minified для вызова только com.package.a (или что-то еще, это не имеет значения). Затем используйте отражение, чтобы увидеть, существует ли класс .

Что-то вроде этого:

boolean isProguardEnabled() { 
    try{ 
     return Class.forName("com.package.Thing") == null; 
    catch(ClassNotFoundException cnfe) { 
     return true; 
    } 
} 

Очевидно это работает только, если вы знаете, из класса, который будет изменен, когда ProGuard включена.

Возможно, в общем случае вы можете найти класс com.package.a и использовать его в качестве сигнала, что proguard включен, предполагая, конечно, что у вас действительно нет класса по имени a. По умолчанию proguard будет просто использовать алфавит, чтобы придумать имена классов, но вы также можете указать в своей конфигурации proguard собственный список имен классов для использования (что представляет другой способ сделать этот же трюк, найти одно из этих имен классов которые вы указали).

+0

Благодарим вас за помощь Сэму. Я определенно буду использовать это как дополнительный вариант. Этот метод мне вообще не приходил. :) – Hulabaloo

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