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的情况

转载于:https://www.cnblogs.com/Ricardoldc/p/10335506.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 当使用Gradle打包后,出现没有主清单的问题时,可能是因为在打包过程中没有正确配置清单文件。在Gradle中,可以使用插件来自动生成清单文件。你可以尝试使用Gradle的Shadow插件来解决这个问题。Shadow插件可以将所有的依赖项合并到一个可执行的JAR文件中,并自动添加主清单。你可以在build.gradle文件中添加以下配置来使用Shadow插件: ```groovy plugins { id 'com.github.johnrengelman.shadow' version '7.0.0' } shadowJar { mergeServiceFiles() manifest { attributes 'Main-Class': 'your.main.class' } } ``` 在上面的配置中,你需要将`your.main.class`替换为你的主类的完整路径。然后,使用`gradle shadowJar`命令来打包你的项目。这样就会生成一个包含主清单的可执行JAR文件。\[1\] 另外,如果你在使用IntelliJ IDEA进行开发,你也可以在运行配置中添加启动参数来解决这个问题。你可以在运行配置的"VM options"中添加`-Djava.library.path=your/path`来指定主清单的路径。\[2\] #### 引用[.reference_title] - *1* *2* [gradle打jar包 springboot项目 启动报错:无法找到启动类和没有主清单属性 已解决](https://blog.csdn.net/daben0215/article/details/125216494)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值