Gradle打包后自动推送到FTP服务器

Posted Ricardoldc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle打包后自动推送到FTP服务器相关的知识,希望对你有一定的参考价值。

gradle打包后自动推送到FTP服务器


1.使用Gradle生成APK

  • android Studio项目的根目录下有一个gradle.properties文件,专门用来配置全局键值对数据;在该文件中添加如下内容:
  KEY_PATH = D:/KeyStorePath/keystore/keystore.jks
  KEY_PASS = pwdkeystore
  ALIAS_NAME = keyAlias
  ALIAS_PASS = pwdkeyAlias
  • 编辑app/build.gradle文件,在android闭包中添加如下内容:
signingConfigs {
  config {
      storeFile file(KEY_PATH)
      storePassword KEY_PASS
      keyAlias ALIAS_NAME
      keyPassword ALIAS_PASS
  }
}
  • 在buildTypes的release闭包中添加如下内容:
   signingConfig signingConfigs.config
  • 添加完成后,可分别通过as右侧的gradle的app/build/assembleRelease、app/build/assembleDebug来打release包和debug包;

2.打包成功后将apk文件推送到ftp服务器

  • 在app/build.gradle的android闭包中添加以下代码:
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"
       }
}
  • 在与android同级中新建任务(task):
//将gradle生成的release包推送到ftp服务器
task uploadReleaseToFtp {
   //在assembleRelease执行之后再执行
   dependsOn ‘assembleRelease‘
   doLast {
       ant {
           taskdef(name: ‘ftp‘,
                   classname: ‘org.apache.tools.ant.taskdefs.optional.net.FTP‘,
                   classpath:  configurations.ftpAntTask.asPath)
           ftp(server: "xxx.xxx.xxx.xxx", 
                   userid: "userid",  //用户名
                   password: "password", //密码
                   //上传后文件存储的目录
                   remoteDir: "/ldc/") {   
                   //本地文件路径
               fileset(dir: "build/outputs/apk/release") {
                   include(name: "app-release.apk")
               }
           }
       }
   }
}
//将gradle生成的debug包推送到ftp服务器
task uploadDebugToFtp  {
   //在assembleDebug执行之后再执行
   dependsOn ‘assembleDebug‘
   doLast {
       ant {
           taskdef(name: ‘ftp‘,
                   classname: ‘org.apache.tools.ant.taskdefs.optional.net.FTP‘,
                   classpath: configurations.ftpAntTask.asPath)
           ftp(server: "xxx.xxx.xxx.xxx",
                   userid: "userid",   //用户名
                   password: "adminftp123",  //密码
                   //上传后文件存储的目录
                   remoteDir: "/ldc/") {
                   //本地文件路径
               fileset(dir: "build/outputs/apk/debug") {
                   //要上传的文件名
                   include(name: "app-debug.apk")
               }
           }
       }
   }
}

在执行以上任务时,需要将防火墙关闭,否则在运行时会出现上传文件大小为0的情况

以上是关于Gradle打包后自动推送到FTP服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Gradle 推送到 Github 包注册表

自动交换和将代码直接推送到生产之间有啥区别?

项目配置打包项目镜像并推送到镜像仓库

使用Bat自动打包并通过FTP发送到备份服务器——实战测试

IDE使用技巧:打包项目推送到docker hub

打包docker镜像推送到远程服务器并部署到k8s