Flexjson и Dexguard/Proguard

У меня возникают проблемы с использованием dexguard, когда дело доходит до библиотеки flexjson. Я продолжаю получать следующую ошибку при попытке десериализации с помощью JSONDeserializer.

 **09-15 20:46:10.271 10901-11552/** **A/art: sart/runtime/class_linker.cc:3430] Check failed: klass->IsProxyClass()** 

Есть ли у кого-нибудь правильные правила для правильной работы flexjson после обфускации в apks для выпуска Android?

Что-то похожее на gson lib.


person joseporto    schedule 16.09.2016    source источник


Ответы (2)


Скорее всего, это на устройстве Samsung — некоторые модели устройств и версии Android имеют проблемы с некоторыми символами Юникода в кодировке UTF-8. Вам следует попробовать обновить DexGuard до последней версии. В противном случае вы также можете попробовать обойти это, используя простой словарь запутывания:

-classobfuscationdictionary empty.txt

где empty.txt — пустой файл.

person Eric Lafortune    schedule 21.09.2016
comment
Даже после добавления их последней банки она все еще терпела неудачу. Ваше предложение в значительной степени решило мою проблему! Благодарность! Можете ли вы объяснить, что делает этот обходной путь? - person joseporto; 23.09.2016
comment
Это исправлено в будущих версиях? - person joseporto; 23.09.2016
comment
Обходной путь позволяет избежать имен классов с символами Юникода, которые некоторые устройства Samsung не обрабатывают должным образом. - person Eric Lafortune; 24.09.2016

У нас была такая же проблема на нескольких устройствах Samsung (Galaxy J1 и J5 на Android 5.1.1). Приложение просто не запускалось.

Информации о проблеме нет ни в Crashlytics, ни в Google Play. В конце концов, мы связались с GuardSquare, который посоветовал нам обновиться до свежей версии DexGuard 8.0.06. Эта версия включает новый словарь, который решает ANR на этих устройствах.

Использование строки ниже, как упомянул Эрик, также работает. Хотя это будет использовать только символы ASCII, как упоминал его коллега. Я просто спросил, есть ли какие-либо недостатки в использовании этого. Потому что это может избежать проблем в будущем.

-classobfuscationdictionary empty.txt
person Ben Groot    schedule 14.08.2017
comment
Только что получил ответ на вопрос ASCII против Unicode: использование символов UTF-8 — это еще одна дополнительная трудность, затрудняющая чтение и понимание запутанного кода хакерами: распознать и запомнить случайные имена классов UTF-8 труднее, чем ASCII названия классов. В остальном с точки зрения обфускации отличий нет. - person Ben Groot; 14.08.2017