You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何在Gradle构建APK后调用Java方法?

解决Android Gradle构建后调用Java方法的几种方案

方案1:在Gradle任务中直接加载并调用已编译的Java类

如果你的MyClass是Android项目模块内的类,先确保它在assembleRelease执行前已完成编译,再通过Gradle脚本加载类并调用方法:

tasks.whenTaskAdded { task ->
    if (task.name == 'assembleRelease') {
        task.finalizedBy postApkProcess
    }
}

task postApkProcess {
    doLast {
        // 指定Android模块编译后的类文件目录
        def classDir = file("${project.buildDir}/intermediates/javac/release/classes")
        // 将类目录添加到当前类加载器的路径中
        this.class.classLoader.addURL(classDir.toURI().toURL())
        
        // 加载目标类、实例化并调用方法
        def myClass = Class.forName("com.yourpackage.MyClass")
        def instance = myClass.getDeclaredConstructor().newInstance()
        instance.postBuild()
    }
}

注意替换com.yourpackage.MyClass为你实际的类全限定名;如果类依赖第三方库,需要把对应jar包路径也加到类加载器中。

方案2:用Exec任务执行Java main方法(无需Java插件)

直接通过Exec任务调用系统java命令,指定类路径和主类,彻底避免Java插件与Android插件的冲突:

tasks.whenTaskAdded { task ->
    if (task.name == 'assembleRelease') {
        task.finalizedBy postApkProcess
    }
}

task postApkProcess(type: Exec) {
    // 拼接类路径:编译后的类目录 + 依赖jar包(按需添加)
    def classpath = [
        "${project.buildDir}/intermediates/javac/release/classes",
        // 若有第三方依赖jar,可追加路径:
        // "${project.rootDir}/app/libs/your-dependency.jar"
    ].join(System.getProperty('path.separator'))

    commandLine 'java', '-cp', classpath, 'com.yourpackage.MyClass'
}

需要让MyClass包含main方法,示例如下:

public class MyClass {
    public static void main(String[] args) {
        postBuild();
    }

    public static void postBuild() {
        // 你的APK后处理逻辑
    }
}

方案3:将Java逻辑迁移到Gradle脚本(Groovy/Kotlin)

如果处理逻辑不复杂,可直接把Java代码转换成Groovy(Gradle默认支持)代码,写在任务的doLast块中,无需额外Java类:

task postApkProcess {
    doLast {
        println "开始处理构建后的APK..."
        def apkFile = file("${project.buildDir}/outputs/apk/release/app-release.apk")
        if (apkFile.exists()) {
            // 示例:复制APK到指定目录
            copy {
                from apkFile
                into "${project.rootDir}/release-apks"
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者The_Cuber7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:35:10