Проблемы с запутыванием - PullRequest
1 голос
/ 09 июня 2009

Я использую антенну для сборки, упаковки и обфускации приложения j2me. Строительные и упаковочные работы отлично.

В проекте используется сторонний jar, который уже запутан, за исключением некоторых интерфейсов.

При попытке запутать, я получил несколько ошибок, таких как:

[wtkobfuscate] Warning: i: can't find referenced class fooPackage.fooClass

Class i и fooPackage.fooClass взяты из этой сторонней фляги, о которой я упоминал.

UPDATE :

Эта сторонняя библиотека использует j2me-xmlrpc.jar. Если я не соберу все вместе, я не смогу запутать сторонние интерфейсы и j2me-xmlrpc.jar. (и я не могу запустить приложение таким образом, не знаю почему)

Если я упаковываю только j2me-xmlrpc.jar и классы своего проекта, я получаю эту ошибку при запутывании

[wtkobfuscate] Warning: there were 2 instances of library classes depending on program classes.

ОБНОВЛЕНИЕ 2:

Я знаю, что это запутывание возможно, потому что в Netbeans я могу сделать запутывание с помощью Proguard.

Поскольку внутренние компоненты Netbeans используют ANT для создания сборок, я попытался скопировать сгенерированный build.xml в свой собственный build.xml.

Для обфускации Netbeans использует библиотеку org-netbeans-modules-mobility-antext.jar, которую можно использовать за пределами Netbeans. Я импортировал эту библиотеку в свой проект и использовал ее без проблем.

Но я получаю ту же ошибку, что и при использовании антенны.

Запутывание в Netbeans генерирует много предупреждений, но оно все еще генерирует запутанную банку.

Что мне не хватает?

Ответы [ 3 ]

1 голос
/ 09 октября 2009

Я использовал Proguard 4.3. Переход на Proguard 4.2 решил проблему.

1 голос
/ 10 июня 2009

Если сторонняя библиотека запутана, не включайте эту библиотеку, пока вы запутываете свои классы. Скорее выполните эти шаги

  1. Jar ваши классы в одиночку (не включая сторонние библиотеки)
  2. Затемнение банки, полученной на шаге 1
  3. Разархивировать запутанный кувшин, полученный на шаге 2, и стороннюю библиотеку в некоторой временной папке
  4. Разбить все неиспорченные классы
  5. Проверим и упакуем их снова
0 голосов
/ 21 июля 2009

попробуйте использовать jshrink. У меня гораздо лучшие результаты, чем у proguard:

                    <java jar="obfuscator\jshrink.exe" fork="true">
                        <arg value="..\${projectdir}\${projectname}.jar"/>
                        <arg value="-classpath"/>
                        <arg pathref="project.class.path"/>
                        <arg value="-keep"/>
                        <arg value="${midletclass}"/>
                        <arg value="-o"/>
                        <arg value="..\${projectdir}\${projectname}.jar"/>
                    </java>
...