2013-06-19 5 views
7

Ich versuche, die signierte APK nach einem Gradle-Build FTP. Ich habe bereits die neue Build-Konfiguration hinzugefügt, die das APK signieren wird, aber ich bleibe stecken und versuche herauszufinden, wie man eine FTP-Aufgabe aufruft.Wie füge ich eine Datei von einem Android Gradle Build?

Ich fand ein offizielles Muster bei section 59.6, aber es beschwert sich, dass es keine Abhängigkeit auflösen kann org.apache.ant: ant-commons-net: 1.8.4. Offensichtlich vermisse ich hier etwas Offensichtliches, zum Beispiel, wo ich eine bestimmte JAR-Datei ablegen oder auf sie verweisen sollte, obwohl ich dachte, Maven würde mit so etwas umgehen?

Als Referenz hier ist die verknüpfte Probe, die mit einer Meldung über die Abhängigkeit fehlschlägt:

configurations { 
    ftpAntTask 
} 

dependencies { 
    ftpAntTask("org.apache.ant:ant-commons-net:1.8.4") { 
     module("commons-net:commons-net:1.4.1") { 
      dependencies "oro:oro:2.0.8:jar" 
     } 
    } 
} 

task ftp << { 
    ant { 
     taskdef(name: 'ftp', 
       classname: 'org.apache.tools.ant.taskdefs.optional.net.FTP', 
       classpath: configurations.ftpAntTask.asPath) 
     ftp(server: "ftp.apache.org", userid: "anonymous", password: "[email protected]") { 
      fileset(dir: "htdocs/manual") 
     } 
    } 
} 

Dies schlägt mit der Nachricht:

> Could not find org.apache.ant:ant-commons-net:1.8.4. 

Hier ist meine komplette gradle.build Datei, mit einigen sensiblen Informationen entfernt:

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

apply plugin: 'android' 

dependencies { 
    compile files('libs/android-support-v4.jar') 
} 

android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 

    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 17 
    } 

    signingConfigs { 
     signed { 
      storeFile file("(removed)") 
      storePassword "(removed)" 
      keyAlias "(removed)" 
      keyPassword "(removed)" 
     } 
    } 

    buildTypes { 
     signed { 
      debuggable false 
      jniDebugBuild false 
      signingConfig signingConfigs.signed 
     } 
    } 
} 

configurations { 
    ftpAntTask 
} 

dependencies { 
    ftpAntTask("org.apache.ant:ant-commons-net:1.8.4") { 
     module("commons-net:commons-net:1.4.1") { 
      dependencies "oro:oro:2.0.8:jar" 
     } 
    } 
} 

task ftp << { 
    ant { 
     taskdef(name: 'ftp', 
       classname: 'org.apache.tools.ant.taskdefs.optional.net.FTP', 
       classpath: configurations.ftpAntTask.asPath) 
     ftp(server: "(removed)", userid: "(removed)", password: "(removed)", remoteDir: "(removed)") { 
      fileset(dir: "(removed)") { 
       include(name: "(removed)") 
      } 
     } 
    } 
} 

Antwort

1

Sie haben kein Repository deklariert, dass c Ein wird verwendet, um die deklarierten Artefakte aufzulösen. Versuchen Sie, die folgende Snippet zu Ihrer build.gradle Datei:

repositories{ 
    mavenCentral() 
} 

prost,

René

+0

Danke, aber ich habe das in meiner Build-Datei. Ich habe meine Frage aktualisiert. –

+0

Nein, Sie haben gerade ein Repository für Ihre Gradle-Plugins (der Repository-Block im Buildscript-Bereich) deklariert, Sie benötigen einen anderen auf Toplevel, wie ich es in meinem Code-Schnipsel gemacht habe. Es gibt Pläne, Plugins in Zukunft einfacher zu installieren und zu vereinfachen. –

+0

Sie haben Recht ... das hat es behoben. Vielen Dank –

0

Sie auch die native ant get Aufgabe, die FTP verwenden können, unterstützt, funktioniert ohne äußere Abhängigkeiten:

ant { 
    get(src: "ftp://<hostname>/remote/path/to/file.jar", dest: "/local/path/to/file", username: 'anonymous', password: 'anonymous') 
    } 
Verwandte Themen