Есть ли способ обнаружить (во время выполнения), если ваше приложение ProGuarded? Моя цель здесь - установить логическое значение на основе того, является ли приложение ProGuarded или нет.Обнаруживать, выполняются ли вы во время выполнения?
ответ
Я думаю, было бы проще, если бы вы установили логическое значение на вариантах/вариантах сборки, на которых вы запускаете ProGuard.
Например: если вы запустите ProGuard на Release и Балетмейстер, но не на Debug, установить логическую переменную истина о выпуске и постановке, но ложна на отладку. This may help
Это немного обходное решение, но есть несколько путей, по которым отражение решит это.
Один из способов - сначала определить класс, который запутывается/минимизируется в случае прогард. Итак, скажите, что у вас есть класс 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 собственный список имен классов для использования (что представляет другой способ сделать этот же трюк, найти одно из этих имен классов которые вы указали).
Благодарим вас за помощь Сэму. Я определенно буду использовать это как дополнительный вариант. Этот метод мне вообще не приходил. :) – Hulabaloo
- 1. Обнаруживать во время выполнения, если загрузка атома?
- 2. Выполняются постоянные операции константы во время выполнения?
- 3. Порядок, если условия выполняются во время выполнения
- 4. Обнаруживать случайные Powerpoint замерзает во время выполнения действий
- 5. Что гарантирует, что директивы выравнивания ассемблера выполняются во время выполнения?
- 6. Обнаруживать UDID-спуфинг на iPhone во время выполнения
- 7. Как вы # включаете фреймворки во время выполнения
- 8. Определите, что модульные тесты выполняются во время выполнения
- 9. Можете ли вы переопределить язык клавиатуры iPhone во время выполнения?
- 10. Можете ли вы сделать объект сериализуемым во время выполнения?
- 11. Можете ли вы зарегистрировать намерение URL во время выполнения?
- 12. Можете ли вы изменить значение конфигурации ConnectionString во время выполнения?
- 13. Пользовательские фильтры действий не выполняются во время выполнения
- 14. Как вы печатаете необработанные запросы во время выполнения переадресации миграции?
- 15. Встраивается ли во время компиляции или во время выполнения?
- 16. создание столбца во время выполнения во время выполнения sql-запроса
- 17. Может ли IsLoggingEnabled() изменяться во время выполнения?
- 18. Выполняется ли установка во время выполнения или во время компиляции?
- 19. Возможно ли создать apk во время выполнения?
- 20. Прерывание во время исполнения во время выполнения
- 21. GridView во время выполнения
- 22. Java: Могу ли я внедрить исключение во время выполнения во произвольный метод класса во время выполнения?
- 23. класса во время выполнения
- 24. Функции всегда выполняются во время эха?
- 25. UnityEditor.Undo во время выполнения
- 26. Обнаруживать тег NFC во время блокировки экрана
- 27. Настройки во время выполнения
- 28. Создать класс во время выполнения
- 29. Можно ли просматривать переменные во время выполнения?
- 30. Возможно ли перегрузить функцию во время выполнения?
Мне нравится этот ответ над отражением – Petro
согласился, что это, конечно, лучший подход. Просто установите переменную. но, честно говоря, он спросил о времени выполнения. установка buildConfigField будет определять конечное поле во время компиляции. –
Спасибо, в то время как Сэм Дозор ответил прямо, что я спросил, это лучший вариант. Я ценю это. – Hulabaloo