Skip to content

Commit e4df6d4

Browse files
committed
添加VasDolly多渠道打包
1 parent 0e8019e commit e4df6d4

File tree

3 files changed

+115
-1
lines changed

3 files changed

+115
-1
lines changed

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ apply plugin: 'kotlin-android'
33
apply plugin: 'kotlin-android-extensions'
44
apply plugin: 'kotlin-kapt'
55
apply from: '../channel.gradle'
6+
apply from: '../jenkins_package.gradle'
67

78
kapt {
89
generateStubs = true

gradle.properties

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,11 @@ android.enableJetifier=true
2020
# Kotlin code style for this project: "official" or "obsolete":
2121
kotlin.code.style=official
2222
android.databinding.enableV2=true
23-
kapt.incremental.apt = false
23+
kapt.incremental.apt = false
24+
25+
#Jenkins
26+
BUILD_TYPE=release
27+
BUILD_URL=''
28+
JOB_NAME=''
29+
BRANCH_NAME=''
30+
BUILD_USER=''

jenkins_package.gradle

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
import groovy.json.JsonSlurper
2+
3+
// 打包测试环境 apk 上传蒲公英
4+
task packageApk {
5+
// 让packageApk 依赖于assembleRelease(Debug). 包构建成功后
6+
//才会执行uploadApk()
7+
dependsOn("assemble" + BUILD_TYPE.capitalize())
8+
doLast {
9+
uploadApk()
10+
}
11+
}
12+
13+
def uploadApk() {
14+
// 查找上传的 apk 文件, 这里需要换成自己 apk 路径"
15+
def apkDir = new File("./app/build/outputs/apk/${BUILD_TYPE}")
16+
def apk = null
17+
for (int i = apkDir.listFiles().length - 1; i >= 0; i--) {
18+
File file = apkDir.listFiles()[i]
19+
if (file.name.endsWith(".apk")) {
20+
apk = file
21+
break
22+
}
23+
}
24+
if (apk == null || !apk.exists()) {
25+
throw new RuntimeException("apk file not exists!")
26+
}
27+
println "*************** upload start ***************"
28+
29+
String BOUNDARY = UUID.randomUUID().toString(); // 边界标识 随机生成
30+
String PREFIX = "--", LINE_END = "\r\n";
31+
String CONTENT_TYPE = "multipart/form-data"; // 内容类型
32+
33+
try {
34+
URL url = new URL("https://www.pgyer.com/apiv2/app/upload");
35+
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
36+
conn.setReadTimeout(30000);
37+
conn.setConnectTimeout(30000);
38+
conn.setDoInput(true); // 允许输入流
39+
conn.setDoOutput(true); // 允许输出流
40+
conn.setUseCaches(false); // 不允许使用缓存
41+
conn.setRequestMethod("POST"); // 请求方式
42+
conn.setRequestProperty("Charset", "UTF-8"); // 设置编码
43+
conn.setRequestProperty("connection", "keep-alive");
44+
conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);
45+
DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
46+
47+
StringBuffer sb = new StringBuffer();
48+
sb.append(PREFIX).append(BOUNDARY).append(LINE_END);//分界符
49+
sb.append("Content-Disposition: form-data; name=\"" + "_api_key" + "\"" + LINE_END);
50+
sb.append("Content-Type: text/plain; charset=UTF-8" + LINE_END);
51+
sb.append(LINE_END);
52+
sb.append("f5d3c04a2f4fc48b8b2c65eb5c331526");
53+
sb.append(LINE_END);//换行!
54+
55+
56+
if (apk != null) {
57+
58+
sb.append(PREFIX);
59+
sb.append(BOUNDARY);
60+
sb.append(LINE_END);
61+
/**
62+
* 这里重点注意: name里面的值为服务器端需要key 只有这个key 才可以得到对应的文件
63+
* filename是文件的名字,包含后缀名的 比如:abc.png
64+
*/
65+
sb.append("Content-Disposition: form-data; name=\"file\"; filename=\"" + apk.getName() + "\"" + LINE_END);
66+
sb.append("Content-Type: application/octet-stream; charset=UTF-8" + LINE_END);
67+
sb.append(LINE_END);
68+
dos.write(sb.toString().getBytes())
69+
70+
InputStream is = new FileInputStream(apk)
71+
byte[] bytes = new byte[1024];
72+
int len = 0;
73+
while ((len = is.read(bytes)) != -1) {
74+
dos.write(bytes, 0, len);
75+
}
76+
is.close();
77+
dos.write(LINE_END.getBytes());
78+
byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END).getBytes();
79+
80+
dos.write(end_data);
81+
dos.flush();
82+
83+
int res = conn.getResponseCode();
84+
if (res == 200) {
85+
println("Upload request success");
86+
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()))
87+
StringBuffer ret = new StringBuffer();
88+
String line
89+
while ((line = br.readLine()) != null) {
90+
ret.append(line)
91+
}
92+
String result = ret.toString();
93+
println("Upload result : " + result);
94+
95+
def resp = new JsonSlurper().parseText(result)
96+
println result
97+
println "*************** upload finish ***************"
98+
sendMsgToDing(resp.data)
99+
}
100+
}
101+
} catch (MalformedURLException e) {
102+
e.printStackTrace();
103+
} catch (IOException e) {
104+
e.printStackTrace();
105+
}
106+
}

0 commit comments

Comments
 (0)