gpt4 book ai didi

Android Gradle Ant SCP 任务

转载 作者:行者123 更新时间:2023-11-29 21:02:48 28 4
gpt4 key购买 nike

我要迁移到 Android Studio,所以我要将现有的 ANT 构建过程迁移到 Gradle。不过我是 Gradle 的新手,所以我在这个过程中遇到了一些问题。

我当前的 ANT 脚本使用 scp task 将我的 APK 部署到服务器.我希望我的 Gradle 脚本也能这样做,但是当我尝试在我的 Gradle 脚本中使用 scp 任务时,我收到以下错误消息:

Error:(58, 0) Problem: failed to create task or type scp Cause: the class org.apache.tools.ant.taskdefs.optional.ssh.Scp was not found. This looks like one of Ant's optional components. Action: Check that the appropriate optional JAR exists in -ANT_HOME/lib -the IDE Ant configuration dialogs

Do not panic, this is a common problem. The commonest cause is a missing JAR.

This is not a bug; it is a configuration problem

当我转到我的 ANT_HOME/lib 目录时,ant-jsch.jar 已经在那里。

如何在我的 Android Gradle 构建脚本中使用 ant scp 任务?

感谢您的帮助!

编辑以添加现有的 ANT 脚本

<!-- Deploy to server -->
<target name="deployAPK">
<input
addproperty="userName"
message="Username for ${serverName}: " />

<exec executable="scp" >
<arg value="${out.absolute.dir}/${fileName}" />
<arg value="${userName}@${serverName}:${deployDirectory}" />
</exec>
</target>

ANT 依赖further research之后,Gradle 似乎使用了它自己的 ANT 实例。这可以解释为什么我的 ANT_HOME 中的 ant-jsch.jar 没有被使用,但我仍然没有运气将它添加到我的依赖项中。

最佳答案

我对 ant scp 任务的依赖项无法正常工作的原因是它们位于错误的位置。在继续使用我的脚本之后,我通过将我的依赖项移动到我的任务之上和我的插件之下来让它工作。我学到了一些关于 Gradle 的新知识 :)。

希望这对其他人有帮助!

buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
}
}

repositories {
mavenCentral()
}

configurations {
sshAntTask
}

apply plugin: 'android'

dependencies {
compile 'com.google.android.gms:play-services:4.+'
androidTestCompile 'com.jayway.android.robotium:robotium-solo:3.5.1'
sshAntTask 'org.apache.ant:ant-jsch:1.9.4'
}

android {
compileSdkVersion 19
buildToolsVersion '20.0.0'

defaultConfig {
// private
}

signingConfigs {
release {
// private
}
}

buildTypes {
debug {
applicationVariants.all { variant ->
String filePath = outputFile.absolutePath
ant {
ant.taskdef(
name: 'scp',
classname: 'org.apache.tools.ant.taskdefs.optional.ssh.Scp',
classpath: configurations.sshAntTask.asPath)
scp(file: filePath, todir: "DEPLOY_DIR_HERE")
}
}
}

只是想提供有关此解决方案的更新。升级到 Android Studio 1.0 和最新版本的 Gradle 后,scp 停止为我工作。该应用程序会成功构建,但当它尝试部署时会为方法“com.jcraft.jsch.JSchException”抛出“NoSuchMethodError”。

最终,我发现 Gradle 现在包含了它自己的 jsch jar,所以我们不再需要在我们的依赖项中包含一个。解决方法是将我们的 sshAntTask 依赖项更改为:

sshAntTask 'org.apache.ant:ant-jsch:1.9.4'

希望这对某人有帮助!

关于Android Gradle Ant SCP 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25494396/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com