Ответ 1
Я бы порекомендовал ProGuard. Даже без обфускации (что может значительно сократить имена, используемые в постоянном пуле), он может удалить "мертвый код" (неиспользуемые методы) используемых библиотек и т.д. (Его также можно использовать для простого слияния всего вместе).
Для "правильного" требуется немного возиться, особенно. если есть динамически загруженные классы, но очень рекомендуется. Фактическое преимущество экономии пространства, однако, "зависит" от того, что можно устранить, и обычно идет на сторону большего количества внешних библиотек.
Теперь, для обфускации - он делает столько же, сколько любой обфускатор: делает "декомпиляцию" кода в вещи с значимыми именами невозможными.
Obfuscation не сохранит ваш сверхсекретный алгоритм или не скроет ваши закрытые ключи: если JVM (или Dalvik после преобразования) должен понять это, тогда так же может быть декомпилятор и любой, кто действительно хочет получить доступ, Ваш код можно даже снять в форме байт-кода и использовать просто через. отражение (просто представьте себе ужасный API с нулевой документацией): любой, кто действительно хочет получить доступ, может. Но, возможно, обфускация сделает эту задачу невыполнимой для затрат/выплат: "Это зависит".
Не хотите переводить трассировки стека? Простой: не используйте его для отладки (не так полезно для получения следов от пользователей) или не допускайте обфускации (другие преимущества по-прежнему применяются); -)
Счастливое кодирование.