问题描述
在https://medium.com/androiddevelopers/new-apis-in-the-android-gradle-plugin-f5325742e614中,在com.android.tools.build:gradle-api
包中声明了一个新的api。应该用它来代替com.android.tools.build:gradle
包中的旧接口。
这里的一个重要区别似乎是现在限制了对android任务的访问,而我们应该将其作为中介与Artifact系统进行交互。
像这样:
class ExamplePlugin: Plugin<Project> {
override fun apply(project: Project) {
project.extensions.getByType(CommonExtension::class.java).let { androidExtension ->
androidExtension.onVariantProperties {
val myTask = project.tasks.register("myTask${this.name.capitalize()}",MyTask::class.java) {
it.inputApkFiles.set(artifacts.get(ArtifactType.APK))
}
artifacts
.use(myTask)
.wiredWithDirectories(
MyTask::inputApkFiles,MyTask::outputApkDirectory
)
.toTransform(ArtifactType.APK)
}
}
}
}
这意味着新任务:app:myTaskDebug
和:app:myTaskRelease
现在可用。但是,必须直接调用它们,而android-studio功能(例如直接部署到设备上的播放按钮)将不包含这些功能。
解决此问题的常用方法是使:app:assembleDebug
和app:assembleRelease
任务取决于您的自定义任务。像这样(在旧的api中)
project.getExtensions().getByType(AppExtension.class).applicationVariants.each { appVariant ->
appVariant.assemble.dependsOn(myTask)
}
使用新的api获得此行为的正确方法是什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)