android - Android Studio:JavaExec:找不到或加载主类
问题描述
作为构建脚本的一部分,我想在打包 APK 之前运行一些 Java 代码。
当我尝试构建我的项目时,出现错误:
Error: Could not find or load main class net.bgreco.myapp.build.BuildScript
BuildScript.java
位于app/src/main/java/net/bgreco/myapp/build/
。
在我收到上面的错误消息之前,BuildScript.class
确实已成功编译,我可以从命令行运行它而没有错误。
app/build.gradle
:
task runBuildScript(type: JavaExec) {
main = 'net.bgreco.myapp.build.BuildScript'
}
tasks.whenTaskAdded { theTask ->
if (theTask.name.contains('package')) {
theTask.dependsOn 'runBuildScript'
}
}
解决方案
在这个答案的一些帮助下,我通过如下修改类路径来让它工作。我还需要引用一些 Android 库,所以我包含了android.jar
.
app/build.gradle
:
task runBuildScript(type: JavaExec) {
String flavor, buildType
(flavor, buildType) = getCurrentFlavorAndBuildType()
classpath files("build/intermediates/classes/" + flavor + "/" + buildType, "${android.getSdkDirectory().getAbsolutePath()}\\platforms\\${android.compileSdkVersion}\\android.jar")
main = 'net.bgreco.myapp.build.BuildScript'
args = [flavor] // Not needed unless you want to know the current flavor from within the BuildScript
}
tasks.whenTaskAdded { theTask ->
if (theTask.name.contains('package')) {
theTask.dependsOn 'runBuildScript'
}
}
def getCurrentFlavorAndBuildType() {
Gradle gradle = getGradle()
String tskReqStr = gradle.getStartParameter().getTaskRequests().toString()
Pattern pattern;
if (tskReqStr.contains("assemble"))
pattern = Pattern.compile("assemble(\\w+)(Release|Debug)")
else
pattern = Pattern.compile("generate(\\w+)(Release|Debug)")
Matcher matcher = pattern.matcher(tskReqStr)
if (matcher.find())
return [matcher.group(1).toLowerCase(), matcher.group(2).toLowerCase()]
else {
println "NO MATCH FOUND"
return ["", ""];
}
}
推荐阅读
- vagrant - 主机崩溃后从 VirtualBox/Vagrant 中恢复丢失的数据
- python - 是否可以(以及如何)查看使用“pip install package-name”安装的包的 Python 源代码?
- javascript - 如何阻止随机颜色重复?
- architecture - DDD - 贫血与富领域模型
- python - How to use scrapy to get to the next chapter on fanfiction.net?
- ajax - Ajax 警报功能不适用于 laravel 数据
- python - Pygame image.save: Is it possible to have the user choose save location?
- performance - Unity 2019 动画师预览窗口非常滞后
- pitest - Pitest 没有运行 Kotlintest 测试
- html - div 元素有错误的视口