版权声明:欢迎转载,转载请注明出处-->http://blog.csdn.net/angcyo https://blog.csdn.net/angcyo/article/details/85278250
强烈建议, 优先阅读我上一篇文章:
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)
的大佬,等你来撩.
扫描二维码关注公众号,回复:
5629351 查看本文章
联系作者
请使用QQ扫码加群, 小伙伴们都在等着你哦!
关注我的公众号, 每天都能一起玩耍哦!