提问者:小点点

使用Android插件获取gradle项目的类路径


我一直在为gradle多项目构建构建一些任务,并且需要获取项目的类路径。构建脚本包含使用Java插件的项目和使用Android插件的项目。

对于Java项目,我可以使用这个问题中投票最多的答案来获取类路径,使用配置. runtime.asPath;然而,这不适用于Android项目,因为没有配置.runtime属性。

如何使用Android插件为gradle项目生成类路径?


共3个答案

匿名用户

Android项目可能会构建应用程序的多个版本。这些被称为变体。最基本的变体是“调试”和“发布”以下代码应该为项目中的所有变体创建类路径分配。将此代码放在模块的“build. gradle”文件中。

android.applicationVariants.each { variant ->
    variant.javaCompile.classpath += configurations.provided
}

您应该能够使用变体名称引用特定变体:

debug.javaCompile.classpath

匿名用户

这是一个gradle任务,它生成模块jar,还包括所有变体的测试类路径。它包括库和选定运行时的android. jar。

我添加了两个命令行执行,用于更新emacs中的一些env var和杀死任何正在运行的beanshell(使用以前的类路径)。

task classpath(type: Jar) {
  from android.sourceSets.main.java.srcDirs,
       android.sourceSets.test.java.srcDirs
  outputs.upToDateWhen { false }
  doLast {
    println "Building classpath..."
    def cp2 = [android.getBootClasspath()[0], it.archivePath]
    android.applicationVariants.all { v ->
      cp2 += v.getApkLibraries()
    }
    def classpath = cp2.unique().join(":")
    println "Updating emacs..."
    exec {
      executable "sh"
      args "-c", "emacsclient --eval '(setenv \"CLASSPATH\" \""+classpath+"\")'"
    }
    exec {
      executable "sh"
      args "-c", "emacsclient --eval '(jdee-bsh-exit)'"
    }
  }
}

请注意,我正在使用“:”来加入类路径

匿名用户

project.android.applicationVariants.all { v ->
            v.getCompileClasspath(null).getFiles().each{
                File f->
                    f.getAbsolutePath()//this is the one of classpath
            }
        }