AS--›Gradle上传文件至蒲公英

强烈建议, 优先阅读我上一篇文章:
AS–›Gradle上传文件至七牛云

里面有介绍Gradle引入和使用第三方SDK的方法.

Gradle介绍

阅读

变量的声明

阅读

函数的声明

阅读

Task的使用

阅读


蒲公英介绍

蒲公英也有java语言版本的SDK, 所以根据上一篇文章的引入方法, 这里直接贴上代码吧:

import okhttp3.MultipartBody
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody
import okhttp3.MediaType
import java.util.concurrent.TimeUnit
import com.google.gson.Gson

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath "com.squareup.okhttp3:okhttp:3.12.0"
        classpath "com.google.code.gson:gson:2.8.5"
    }
}

/**
 * 蒲公英 上传脚本
 * */
ext.pgyerConfig = [
        "api_key" : "",
        "user_key": "",

        //需要上传的APK,相对路径/绝对路径
        "apkPath" : "123.apk",

        //请求的api地址
        "pgyerUrl": "https://www.pgyer.com/apiv2/app/upload",

        //官网
        "pgyer"   : "https://www.pgyer.com/"
]
//其他参数配置
def paramsConfig = [:]

task _pgyerUpload() {
    //upload("123.apk")
}

_pgyerUpload.doFirst {
    def apkPath = pgyerConfig.apkPath
    if (apkPath == null) {
        throw IllegalStateException("请指定上传的文件")
    }
    def apkFile = new File(apkPath)
    if (!apkFile.exists()) {
        throw IllegalStateException("需要上传的文件不存在:" + apkFile.getAbsolutePath())
    }

    def clientBuilder = new OkHttpClient.Builder()
    clientBuilder.connectTimeout(10, TimeUnit.SECONDS)
    clientBuilder.readTimeout(60, TimeUnit.SECONDS)

    OkHttpClient client = clientBuilder.build()

    def bodyBuilder = new MultipartBody.Builder()
    bodyBuilder.setType(MultipartBody.FORM)

    bodyBuilder.addFormDataPart("_api_key", new String(pgyerConfig.api_key))
    bodyBuilder.addFormDataPart("uKey", new String(pgyerConfig.user_key))

    bodyBuilder.addFormDataPart("file",
            apkFile.name,
            RequestBody.create(
                    MediaType.parse("application/vnd.android.package-archive"),
                    apkFile)
    )

    HashMap<String, String> params = paramsConfig
    for (String key : params.keySet()) {
        //println("add part key: " + key + " value: " + params.get(key))
        bodyBuilder.addFormDataPart(key, params.get(key))
    }

    def request = new Request.Builder()
            .url(pgyerConfig.pgyerUrl)
            .post(bodyBuilder.build())
            .build()

    println "上传至蒲公英:" + pgyerConfig.pgyer
    
    def response = client.newCall(request).execute()

    if (response == null || response.body() == null) {
        println "蒲公英上传结果失败"
        return null
    }
    def json = response.body().string()
    response.close()

    println "蒲公英上传结果:" + json
    println "蒲公英安装地址: " + pgyerConfig.pgyer + new Gson().fromJson(json, Map.class).data.buildShortcutUrl
}

执行: gradlew _pgyerUpload 就可以上传apkPath指定的本地文件


群内有各(pian)种(ni)各(jin)样(qun)的大佬,等你来撩.

联系作者

点此快速加群

请使用QQ扫码加群, 小伙伴们都在等着你哦!

关注我的公众号, 每天都能一起玩耍哦!

©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:上身试试 返回首页