在Android Studio上调试基于gradle的Java项目?

MLP*_*CiM 12 java android gradle android-studio

我目前的项目由两个模块组成,一个是android,另一个可以作为独立的桌面java使用.我想自己运行第二个模块,并且无需通过设备即可调试它.我不想让一个辅助IntelliJ安装在一个或另一个之间进行交换.

在AS中有没有办法将调试器附加到java gradle任务?

apply plugin: "java"

sourceCompatibility = 1.6
sourceSets.main.java.srcDirs = [ "src/" ]

project.ext.mainClassName = "com.project.Desktop.Launcher"
project.ext.assetsDir = new File("../android/assets");

task run(dependsOn: classes, type: JavaExec) {
    main = project.mainClassName
    classpath = sourceSets.main.runtimeClasspath
    standardInput = System.in
    workingDir = project.assetsDir
    ignoreExitValue = true
}

task dist(type: Jar) {
    from files(sourceSets.main.output.classesDir)
    from files(sourceSets.main.output.resourcesDir)
    from {configurations.compile.collect {zipTree(it)}}
    from files(project.assetsDir);

    manifest {
        attributes 'Main-Class': project.mainClassName
    }
}

dist.dependsOn classes

eclipse {
    project {
        name = appName + "-desktop"
        linkedResource name: 'assets', type: '2', location: 'PARENT-1-PROJECT_LOC/android/assets'
    }
}

task afterEclipseImport(description: "Post processing after project generation", group: "IDE") {
  doLast {
    def classpath = new XmlParser().parse(file(".classpath"))
    new Node(classpath, "classpathentry", [ kind: 'src', path: 'assets' ]);
    def writer = new FileWriter(file(".classpath"))
    def printer = new XmlNodePrinter(new PrintWriter(writer))
    printer.setPreserveWhitespace(true)
    printer.print(classpath)
  }
}
Run Code Online (Sandbox Code Playgroud)

MLP*_*CiM 5

http://www.gradle.org/docs/current/userguide/application_plugin.html

然后,您可以通过运行gradle run来运行该应用程序.Gradle将负责构建应用程序类及其运行时依赖项,并使用正确的类路径启动应用程序.您可以使用gradle run --debug-jvm以调试模式启动应用程序(请参阅JavaExec.setDebug()).

添加到build.gradle

apply plugin:'application'

mainClassName = 'my.company.namespace.MainClass'
Run Code Online (Sandbox Code Playgroud)

创建一个新的运行/调试Gradle配置

  1. 编辑配置
  2. "+"(添加)
  3. 摇篮

或者你也可以单独[运行]并复制任务.

  1. 用于任务使用 run --debug-jvm
  2. 将其重命名为[debug]

然后根据IntelliJ的指示附加调试器:

  1. 编辑配置
  2. "+"(添加)
  3. 远程
  4. 重命名为"附加调试器"
  5. (可选)在启动之前,添加另一个配置并添加[debug]

现在您可以启动[debug],然后启动Attach Debugger,或者如果您按照步骤6,只需按一下Stop Debugger按钮就Listening for transport dt_socket at address: 5005 message可以将其视为入口点.