Может ли запутывание (proguard) привести к неисправности мидлета? - PullRequest
1 голос
/ 20 мая 2010

Я пытаюсь запутать Java-мидлет с помощью proguard. На ПК он работает нормально, однако, когда я запускаю его на телефоне, программа открывается, подключается к серверу, а затем зависает. Если я отключу запутывание, он снова будет работать нормально на телефоне. Я перепробовал все уровни запутывания для приложений (7, 8 и 9 в NetBeans), и ни один из них не работает должным образом, и я не могу выпустить это приложение для коммерческого использования без запутывания. Также компилятор выдает несколько предупреждений:

Note: duplicate definition of library class [java.io.ByteArrayOutputStream]
Note: there were 14 duplicate class definitions.

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

Obfuscator Arguments (7):
    -dontusemixedcaseclassnames
    -default package ''
    -keep public class ** {
        public *;
    }

Obfuscator Arguments (8): same as (7) plus -overloadaggressively.

Obfuscator Arguments (9): same as (8) but
    -keep public class ** extends javax.microedition.midlet.MIDlet {
        public *;
    }
instead.

Спасибо.

1 Ответ

1 голос
/ 21 мая 2010

Запутывание может сломать вещи. Без примера кода в горшке трудно точно сказать, что может быть не так. Примером того, что может пойти не так, может быть, если вы загрузите класс в своем коде по имени - у запутанного класса будет другое имя, и поэтому он не будет найден.

Сообщения, которые вы упоминаете , могут указывать на проблему - вы должны иметь эти классы более одного раза на своем пути. Этот класс, который вы упоминаете, имеет отношение к связи, с которой у вас проблемы? Посмотрите внимательно на используемые банки и убедитесь, что в ваше приложение включен правильный (и минимальный) набор классов. ByteArrayOutputStream в CLDC отличается от рабочего стола JDK .

...