Опитвам се да конфигурирам ProGuard като част от моите скриптове за изграждане на Gradle за java приложение в Ubuntu, достъпно чрез bash, но изглежда не мога да го направя правилно. Никога преди не съм използвал нито една от двете технологии. С помощта на Ръководството на ProGuard написах следната задача, която в момента изпълнявам вече съществуващ jar файл, докато се опитвам да накарам нещо да работи.
task obfuscate(type: proguard.gradle.ProGuardTask) {
injars 'build/libs/myapplication.jar'
outjars 'build/libs/myapplication_out.jar'
libraryjars '<java.home>/lib/rt.jar'
printmapping 'myapplication.map'
keep 'public class mypackage.MyMainClass { \
public static void main(java.lang.String[]); \
}'
}
Получавам много редове, в които се посочва, че липсват вградени файлове на java библиотека като:
Warning: myclasses: can't find referenced class java.lang.String
В долната част на списъка виждам също:
Could not call ProGuardTask.proguard()
Ако проверя моята изходна директория, мога да видя, че е създала структурата на директорията, но не и jar файла и това е, което виждам, ако стартирам задачата си gradle със stacktrace на:
Caused by: org.gradle.api.GradleException: Could not call ProGuardTask.proguard() on task
Разгледах страницата за отстраняване на неизправности на proguard и каза, че трябва да се уверя, че посочвам библиотеката по време на изпълнение на моята платформа и че за JSE това е lib/rt.jar. Можете да видите това горе в аргумента за библиотечните буркани. Какво погрешно съм разбрал?
Could not call ProGuardTask.proguard()
идва от Gradle или ProGuard. Може би показва пълната трасировка на стека.can't find referenced class java.lang.String
звучи сякаш ProGuard не е конфигуриран правилно. - person Peter Niederwieser   schedule 02.04.2014