Flutter插件开发之APK自动安装,Android开发经典实战
import com.android.build.gradle.AppExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
class AutoInstallPlugin : Plugin<Project> {
override fun apply(project: Project) {
// 确保插件只在Android项目上应用
if (project.plugins.none { it is com.android.build.gradle.AppPlugin }) {
throw GradleException("'auto-install' plugin should only be applied on an Android app project.")
}
// 添加自定义任务
project.tasks.register("installDebug") {
doLast {
val appExtension = project.extensions.getByType(AppExtension::class.java)
val flutterTask = project.tasks.findByPath(":flutterBuildDebug")
?: throw GradleException(":flutterBuildDebug task not found.")
// 等待flutter任务执行完成
flutterTask.execute()
// 获取构建输出的APK路径
val apkFile = File(appExtension.applicationVariants[0].outputs[0].outputFile.absolutePath)
.also { file ->
check(file.exists()) { "Build output file does not exist." }
}
// 执行adb命令安装APK
project.exec { spec ->
spec.commandLine("adb", "install", "-r", apkFile.absolutePath)
}
}
}
}
}
这段代码定义了一个简单的Gradle插件,用于自动安装Flutter项目构建的Debug APK。它检查项目是否为Android应用项目,并注册了一个新的Gradle任务installDebug
,该任务会等待Flutter构建任务执行完成,然后自动使用adb
安装APK。这是Android开发中的一个常见实践,可以提高开发效率。
评论已关闭