@WoodsWoods

Как в ProGuard полностью отключить пакет для обфускации?

Добавил библиотеку Yaml через shadowJar в мой jar файл. Переименовал пакет, чтобы она была в пакете ru.wooods.lib.yaml. А потом мне нужно обфусцировать код, но чтобы ProGuard полностью игнорировал код в пакете с библиотекой. Пробовал уже всякое:
-keep class ru.wooods.lib.yaml.** { *; }
-keepclassmembers class ru.wooods.lib.yaml.** { *; }
-keepclasseswithmembers class ru.wooods.lib.yaml.** { *; }


Но при запуске проекта выходит ошибка:

Ошибка

Caused by: java.lang.VerifyError: Bad return type
Exception Details:
  Location:
    ru/wooods/lib/yaml/snakeyaml/constructor/SafeConstructor.createNumber(ILjava/lang/String;I)Ljava/lang/Number; @129: areturn
  Reason:
    Type 'java/lang/Object' (current frame, stack[0]) is not assignable to 'java/lang/Number' (from method signature)
  Current Frame:
    bci: @129
    flags: { }
    locals: { top, top, top, top, top, top, 'java/lang/Object' }
    stack: { 'java/lang/Object' }
  Bytecode:
    0000000: 2cc6 000a 2cb6 0062 a700 0403 3604 1b9c
    0000010: 0017 bb00 1a59 b700 6312 02b6 0065 2cb6
    0000020: 0065 b600 664d 1db2 0043 bea2 000b b200
    0000030: 431d 32a7 0004 013a 0519 05c6 0031 1504
    0000040: 1905 032e a400 0704 a700 0403 3606 1506
    0000050: 9900 1c15 0419 0504 2ea4 000d bb00 1b59
    0000060: 2c1d b700 67b0 2c1d b800 77b0 2c1d b800
    0000070: 5e3a 06a7 000c 3a07 2c1d b800 773a 0619
    0000080: 06b0
  Exception Handler Table:
    bci [108, 115] => handler: 118
  Stackmap Table:
    full_frame(@11,{Top,Integer,Object[#25],Integer},{})
    same_locals_1_stack_item_frame(@12,Integer)
    full_frame(@38,{Top,Top,Object[#25],Integer,Integer},{})
    same_frame(@54)
    same_locals_1_stack_item_frame(@55,Object[#17])
    append_frame(@75,Object[#17])
    same_locals_1_stack_item_frame(@76,Integer)
    chop_frame(@102,2)
    same_frame(@108)
    same_locals_1_stack_item_frame(@118,Object[#23])
    full_frame(@127,{Top,Top,Top,Top,Top,Top,Object[#24]},{})



Пробовал разные версии ProGuard. Java используется одна и та же везде.
А если после обфускации, закинуть библиотеку вручную из оригинала, то ошибки не будет.
Как это все пофиксить?
  • Вопрос задан
  • 28 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы