Size: a a a

2018 September 11

R

Rtem in Android Guards
Я тебе больше скажу, если ты юзаешь GSON, ты вообще обязан ставить @Keep у всех своих замечательных data-классов. И вся обфускация побоку 😉
источник

R

Rtem in Android Guards
Вообще обфусцировать модели это притяно, но в целом клиника )
источник

AE

As Encrypt3d in Android Guards
К слову, даже в крупных известных проектах нередко вкусные места обходятся без обфускации - иногда даже создаётся впечатление, что это делается нарочно
источник

A

Anton in Android Guards
Наверное замануха, всё самое вкусное в другом месте)
источник

Т

Толя Корнильцев in Android Guards
источник

l

lulzceh in Android Guards
так что тут у нас, обфускация, в этом я шарю, азазаза
источник

l

lulzceh in Android Guards
Anton
Всем привет.
Вот есть у нас proguard, есть kotlin с data классами.
Включаем обфускацию, находим data класс, вызываем у него .toString() и все наши "приправы" из proguard побоку, потому что данный метод генерится раньше, чем проходит обфускация.

Кто-нибудь решал это уже, или просто забили и не парились?)
У меня есть три варианта решения, сейчас не хочу их писать, вдруг собью вас с полета фантазии. Но напишу, сразу как затребуете).
юзай java
источник

A

Anton in Android Guards
Тут можно:
- не использовать дата классы;
- в каждом дата классе самому переопределять туСтринг руками;
- сделать 2й пункт, но только через аспекты)

Ничего из этого не хочется делать)
источник
2018 September 12

Y

Yury in Android Guards
Rtem
Я тебе больше скажу, если ты юзаешь GSON, ты вообще обязан ставить @Keep у всех своих замечательных data-классов. И вся обфускация побоку 😉
Через SerializedName все работает же.
источник

R

Rtem in Android Guards
Yury
Через SerializedName все работает же.
Так все равно же там рефлексия под капотом и ты все равно вынужден прописывать все модели в конфиг прогарда
источник

R

Rtem in Android Guards
Пришлось тут решать задачу по имплементации SRP протокола в приложении. По требованиям была использована библиотека NimbusSRP. Но с ней возникли проблемы из-за ее излишней “джавайности”. Пришлось чутка подшаманить. Результат выложил себе на гитхаб: https://github.com/Fi5t/NimbusSRP-Android

Может кому пригодится
источник

Y

Yury in Android Guards
Rtem
Так все равно же там рефлексия под капотом и ты все равно вынужден прописывать все модели в конфиг прогарда
Так зачем? Ну вырежет прогвард поля, которые не используются, так их и парсить тогда не надо. А всю необходимую информацию он и из обфусцированного кода возьмет, аннотации то к полям никуда не режутся, а тип остается прежним. Ну может это раньше не работало, но сейчас конструкция вида
data class DataClass(@SerializedName("last_name") val lastName: String)
у меня работает без конфигурирования прогварда.
источник

R

Rtem in Android Guards
Хм, вот не работало. Ок, я попробую еще раз это все пересобрать с аннотациями
источник

A

Anton in Android Guards
@OxFi5t
добрался до проекта, глянул конфиг для Gson'a
единственное что прописано, это
-keepclassmembers enum * { *; }
источник

A

Anton in Android Guards
помню с енамами были проблемы у gson с proguard
источник

R

Rtem in Android Guards
Хм, просто у меня на старом проекте все было обвешано аннотациями и после прогарда все модели погибли и все сломалось =)
источник

R

Rtem in Android Guards
Может у них апдейт был какой
источник

A

Anton in Android Guards
с аанотациями фикс такой
-keepattributes *Annotation*
источник

R

Rtem in Android Guards
Эта штука у меня во всех конфигаех есть)
источник

R

Rtem in Android Guards
С ней и не работало (без нее тоже, конечно)
источник