ich ProGuard in meinem Gradle Skript zu verwenden Ich versuche mein Code jedes Mal zu verschleiern ich bauen, aber ich in den folgenden Fehler leite:Gradle: Weder Weg noch baseDir kann null oder eine leere Zeichenfolge sein
FAILURE: Build failed with an exception.
* What went wrong:
Neither path nor baseDir may be null or empty string. path='null' basedir='/Users/hassansyyid/Workspace/Random/Launcher/launcher'
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 1.888 secs
Hier mein build.gradle ist:
import proguard.gradle.ProGuardTask
apply plugin: 'com.github.johnrengelman.shadow'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'net.sf.proguard:proguard-gradle:5.3.1'
}
}
jar {
manifest {
attributes("Main-Class": "com.skcraft.launcher.Launcher")
}
}
dependencies {
compile 'org.projectlombok:lombok:1.12.2'
compile 'com.fasterxml.jackson.core:jackson-databind:2.3.0'
compile 'commons-lang:commons-lang:2.6'
compile 'commons-io:commons-io:1.2'
compile 'com.google.guava:guava:15.0'
compile 'com.beust:jcommander:1.32'
compile 'com.miglayout:miglayout:3.7.4'
compile 'com.google.code.findbugs:jsr305:3.0.0'
}
processResources {
filesMatching('**/*.properties') {
filter {
it.replace('${project.version}', project.version)
}
}
}
task obfuscate(type: proguard.gradle.ProGuardTask) {
configuration 'proguard.txt'
injars "${buildDir}/libs/launcher-${version}.jar"
outjars "${buildDir}/libs/launcher-${version}-obf.jar"
libraryjars configurations.compile.find { it.name.startsWith("lombok") }
libraryjars configurations.compile.find { it.name.startsWith("jackson-databind") }
libraryjars configurations.compile.find { it.name.startsWith("jackson-core") }
libraryjars configurations.compile.find { it.name.startsWith("jackson-annotation") }
libraryjars configurations.compile.find { it.name.startsWith("crypto") }
libraryjars configurations.compile.find { it.name.startsWith("guava") }
libraryjars configurations.compile.find { it.name.startsWith("jcommander") }
libraryjars configurations.compile.find { it.name.startsWith("miglayout") }
libraryjars configurations.compile.find { it.name.startsWith("jsr305") }
libraryjars configurations.compile.find { it.name.startsWith("commons-io") }
libraryjars configurations.compile.find { it.name.startsWith("commons-lang") }
}
shadowJar {
dependencies {
exclude(dependency('org.projectlombok:lombok'))
}
}
build.dependsOn(shadowJar)
build.dependsOn(obfuscate)
die einzige Information, die ich über das Thema herausgefunden, dass es auf die obfuscate
Aufgabe zusammenhängt. Ich bestätigte dies, indem ich build.dependsOn(obfuscate)
auskommentierte und der Build erfolgreich war.
Ich habe den Fehler gesucht, konnte aber keine nützlichen Informationen finden. Außerdem laufe ich Gradle 3.1
, den neuesten Gradle Build.
Mein proguard.txt:
# Include java runtime classes
-libraryjars <java.home>/lib/rt.jar
# Output a source map file
-printmapping proguard.map
# Keep filenames and line numbers
-keepattributes SourceFile, LineNumberTable
# Disable certain proguard optimizations which remove stackframes (same as Android defaults)
-optimizations !method/inlining/*
-keep public class * {
public protected *;
}
-keepclassmembernames class * {
java.lang.Class class$(java.lang.String);
java.lang.Class class$(java.lang.String, boolean);
}
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
Vielen Dank im Voraus für jede Hilfe!
Können Sie Ihre proguard.txt Datei schreiben? Ich glaube, der Fehler ist da drin. –
@ sub6resources: Hinzugefügt die proguard.txt –
Hmm, es ist nicht da. Hast du eine Idee wo der Pfad und BaseDir sein könnte? –