From 282f2128bdfe532f55c1784c89aade28b10ef0e6 Mon Sep 17 00:00:00 2001 From: wuao Date: Wed, 6 Sep 2023 18:01:06 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=201=20=E5=AE=8C=E6=88=90=20=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E6=8E=A5=E5=8F=A3=E8=B0=83=E8=AF=95=202=20?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86Lark=20=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 + app/build.gradle | 57 ++++ app/libs/UploadApkPlugin-1.0.0.jar | Bin 0 -> 36367 bytes app/proguard-rules.pro | 21 ++ .../uploadapkplugin/PluginConstants.java | 17 + .../uploadapkplugin/UploadApkPlugin.java | 67 ++++ .../uploadapkplugin/entry/BaseResult.java | 29 ++ .../uploadapkplugin/entry/LarkResult.java | 38 +++ .../entry/PgyCOSTokenResult.java | 89 +++++ .../entry/lark/ElementsDTO.java | 60 ++++ .../entry/lark/LarkRequestBean.java | 309 ++++++++++++++++++ .../uploadapkplugin/entry/lark/TextDTO.java | 28 ++ .../uploadapkplugin/help/CmdHelper.java | 163 +++++++++ .../uploadapkplugin/help/HttpHelper.java | 17 + .../uploadapkplugin/help/ProcessUtils.java | 108 ++++++ .../uploadapkplugin/help/SendMsgHelper.java | 203 ++++++++++++ .../uploadapkplugin/pramars/GitLogParams.java | 25 ++ .../pramars/SendLarkParams.java | 44 +++ .../pramars/TrubitProParams.java | 6 + .../pramars/UploadPgyParams.java | 66 ++++ .../uploadapkplugin/task/BaseTask.java | 107 ++++++ .../uploadapkplugin/task/OnlyUploadTask.java | 51 +++ .../com/trubitpro/uploadapkplugin/test.java | 15 + .../center.uploadpgy.plugin.properties | 1 + build.gradle | 22 ++ gradle.properties | 24 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 185 +++++++++++ gradlew.bat | 89 +++++ .../1.0.0/UploadApkPlugin-1.0.0.jar | Bin 0 -> 36367 bytes .../1.0.0/UploadApkPlugin-1.0.0.jar.md5 | 1 + .../1.0.0/UploadApkPlugin-1.0.0.jar.sha1 | 1 + .../1.0.0/UploadApkPlugin-1.0.0.jar.sha256 | 1 + .../1.0.0/UploadApkPlugin-1.0.0.jar.sha512 | 1 + .../1.0.0/UploadApkPlugin-1.0.0.module | 90 +++++ .../1.0.0/UploadApkPlugin-1.0.0.module.md5 | 1 + .../1.0.0/UploadApkPlugin-1.0.0.module.sha1 | 1 + .../1.0.0/UploadApkPlugin-1.0.0.module.sha256 | 1 + .../1.0.0/UploadApkPlugin-1.0.0.module.sha512 | 1 + .../1.0.0/UploadApkPlugin-1.0.0.pom | 39 +++ .../1.0.0/UploadApkPlugin-1.0.0.pom.md5 | 1 + .../1.0.0/UploadApkPlugin-1.0.0.pom.sha1 | 1 + .../1.0.0/UploadApkPlugin-1.0.0.pom.sha256 | 1 + .../1.0.0/UploadApkPlugin-1.0.0.pom.sha512 | 1 + .../plugin/UploadApkPlugin/maven-metadata.xml | 13 + .../UploadApkPlugin/maven-metadata.xml.md5 | 1 + .../UploadApkPlugin/maven-metadata.xml.sha1 | 1 + .../UploadApkPlugin/maven-metadata.xml.sha256 | 1 + .../UploadApkPlugin/maven-metadata.xml.sha512 | 1 + repo/uploadapkplugin/app/maven-metadata.xml | 13 + .../app/maven-metadata.xml.md5 | 1 + .../app/maven-metadata.xml.sha1 | 1 + .../app/maven-metadata.xml.sha256 | 1 + .../app/maven-metadata.xml.sha512 | 1 + .../app/unspecified/app-unspecified.jar | Bin 0 -> 36367 bytes .../app/unspecified/app-unspecified.jar.md5 | 1 + .../app/unspecified/app-unspecified.jar.sha1 | 1 + .../unspecified/app-unspecified.jar.sha256 | 1 + .../unspecified/app-unspecified.jar.sha512 | 1 + .../app/unspecified/app-unspecified.module | 90 +++++ .../unspecified/app-unspecified.module.md5 | 1 + .../unspecified/app-unspecified.module.sha1 | 1 + .../unspecified/app-unspecified.module.sha256 | 1 + .../unspecified/app-unspecified.module.sha512 | 1 + .../app/unspecified/app-unspecified.pom | 39 +++ .../app/unspecified/app-unspecified.pom.md5 | 1 + .../app/unspecified/app-unspecified.pom.sha1 | 1 + .../unspecified/app-unspecified.pom.sha256 | 1 + .../unspecified/app-unspecified.pom.sha512 | 1 + settings.gradle | 17 + 71 files changed, 2183 insertions(+) create mode 100644 README.md create mode 100644 app/build.gradle create mode 100644 app/libs/UploadApkPlugin-1.0.0.jar create mode 100644 app/proguard-rules.pro create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/PluginConstants.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/UploadApkPlugin.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/entry/BaseResult.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/entry/LarkResult.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/entry/PgyCOSTokenResult.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/entry/lark/ElementsDTO.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/entry/lark/LarkRequestBean.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/entry/lark/TextDTO.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/help/CmdHelper.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/help/HttpHelper.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/help/ProcessUtils.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/help/SendMsgHelper.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/pramars/GitLogParams.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/pramars/SendLarkParams.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/pramars/TrubitProParams.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/pramars/UploadPgyParams.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/task/BaseTask.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/task/OnlyUploadTask.java create mode 100644 app/src/main/java/com/trubitpro/uploadapkplugin/test.java create mode 100644 app/src/main/resources/META-INF/gradle-plugins/center.uploadpgy.plugin.properties create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.md5 create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.sha1 create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.sha256 create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.sha512 create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.md5 create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.sha1 create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.sha256 create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.sha512 create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.md5 create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.sha1 create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.sha256 create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.sha512 create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.md5 create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.sha1 create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.sha256 create mode 100644 repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.sha512 create mode 100644 repo/uploadapkplugin/app/maven-metadata.xml create mode 100644 repo/uploadapkplugin/app/maven-metadata.xml.md5 create mode 100644 repo/uploadapkplugin/app/maven-metadata.xml.sha1 create mode 100644 repo/uploadapkplugin/app/maven-metadata.xml.sha256 create mode 100644 repo/uploadapkplugin/app/maven-metadata.xml.sha512 create mode 100644 repo/uploadapkplugin/app/unspecified/app-unspecified.jar create mode 100644 repo/uploadapkplugin/app/unspecified/app-unspecified.jar.md5 create mode 100644 repo/uploadapkplugin/app/unspecified/app-unspecified.jar.sha1 create mode 100644 repo/uploadapkplugin/app/unspecified/app-unspecified.jar.sha256 create mode 100644 repo/uploadapkplugin/app/unspecified/app-unspecified.jar.sha512 create mode 100644 repo/uploadapkplugin/app/unspecified/app-unspecified.module create mode 100644 repo/uploadapkplugin/app/unspecified/app-unspecified.module.md5 create mode 100644 repo/uploadapkplugin/app/unspecified/app-unspecified.module.sha1 create mode 100644 repo/uploadapkplugin/app/unspecified/app-unspecified.module.sha256 create mode 100644 repo/uploadapkplugin/app/unspecified/app-unspecified.module.sha512 create mode 100644 repo/uploadapkplugin/app/unspecified/app-unspecified.pom create mode 100644 repo/uploadapkplugin/app/unspecified/app-unspecified.pom.md5 create mode 100644 repo/uploadapkplugin/app/unspecified/app-unspecified.pom.sha1 create mode 100644 repo/uploadapkplugin/app/unspecified/app-unspecified.pom.sha256 create mode 100644 repo/uploadapkplugin/app/unspecified/app-unspecified.pom.sha512 create mode 100644 settings.gradle diff --git a/README.md b/README.md new file mode 100644 index 0000000..feb4290 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# uploadapkplugin + +Android. 上传测试服务器 并且自动发送飞书消息的gralde 插件 \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..ca0c944 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,57 @@ +plugins { + id 'groovy' + id 'maven-publish' + id 'java-gradle-plugin' +} + + +task comps { + afterEvaluate { + println("Components: " + components*.name) + } +} +// Because the components are created only during the afterEvaluate phase, you must +// configure your publications using the afterEvaluate() lifecycle method. +afterEvaluate { +publishing{ + + publications { + release(MavenPublication) { + groupId = 'center.uploadpgy.plugin' + artifactId = 'UploadApkPlugin' + version = '1.0.0' + from components.java + + + } + } + repositories { + maven { +// url = "$rootDir/repo" + url = "https://oss.sonatype.org/service/local/staging/deploy/maven2/" + credentials { + username = System.getenv("MAVEN_USERNAME") + password = System.getenv("MAVEN_PASSWORD") + } + } + } +} +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + +dependencies { + + // gradle sdk + implementation gradleApi() + // groovy sdk + implementation localGroovy() + + implementation "com.android.tools.build:gradle:4.1.2" + implementation 'com.github.dcendents:android-maven-gradle-plugin:2.1' + implementation "com.google.code.gson:gson:2.8.8" + implementation "com.squareup.okhttp3:okhttp:3.12.12" +} \ No newline at end of file diff --git a/app/libs/UploadApkPlugin-1.0.0.jar b/app/libs/UploadApkPlugin-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..fa982152a54a89758e0d61d5f8c7469d9d42d416 GIT binary patch literal 36367 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 Nf3*>OjrQiv{|5@B;|Bl$ literal 0 HcmV?d00001 diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/PluginConstants.java b/app/src/main/java/com/trubitpro/uploadapkplugin/PluginConstants.java new file mode 100644 index 0000000..a8fc5e5 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/PluginConstants.java @@ -0,0 +1,17 @@ +package com.trubitpro.uploadapkplugin; + +public class PluginConstants { + + public static final String TASK_GROUP_NAME="publishToThirdPlatform"; + public static final String TASK_DES="tools of upload to third platform"; + + public static final String UPLOAD_PARAMS_NAME = "buildLarkParams"; + public static final String DING_PARAMS_NAME = "buildDingParams"; + public static final String WEIXIN_GROUP_PARAMS_NAME = "buildWeixinGroupParams"; + public static final String GIT_LOG_PARAMS_NAME = "buildGitLogParams"; + + public static final String ANDROID_EXTENSION_NAME = "android"; + public static final String TASK_EXTENSION_NAME = "ApkBuildUploadPlatform"; + public static final String TASK_EXTENSION_NAME_ONLY_UPLOAD = "OnlyUploadApkToPlatform"; + +} diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/UploadApkPlugin.java b/app/src/main/java/com/trubitpro/uploadapkplugin/UploadApkPlugin.java new file mode 100644 index 0000000..2233c17 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/UploadApkPlugin.java @@ -0,0 +1,67 @@ +package com.trubitpro.uploadapkplugin; + +import com.android.build.gradle.AppExtension; +import com.android.build.gradle.api.ApplicationVariant; +import com.android.build.gradle.api.BaseVariant; +import com.trubitpro.uploadapkplugin.help.CmdHelper; +import com.trubitpro.uploadapkplugin.help.ProcessUtils; +import com.trubitpro.uploadapkplugin.pramars.GitLogParams; +import com.trubitpro.uploadapkplugin.pramars.SendLarkParams; +import com.trubitpro.uploadapkplugin.pramars.UploadPgyParams; +import com.trubitpro.uploadapkplugin.task.OnlyUploadTask; + +import org.gradle.api.Action; +import org.gradle.api.DomainObjectSet; +import org.gradle.api.Plugin; +import org.gradle.api.Project; +import org.gradle.api.Task; +import org.jetbrains.annotations.NotNull; + +import java.util.Iterator; +import java.util.Locale; + +import kotlin.jvm.internal.Intrinsics; + +public class UploadApkPlugin implements Plugin { + @Override + public void apply(Project target) { + target.getExtensions().create(PluginConstants.GIT_LOG_PARAMS_NAME, GitLogParams.class); + + SendLarkParams uploadParams = (SendLarkParams)target.getExtensions().create(PluginConstants.UPLOAD_PARAMS_NAME, SendLarkParams.class, new Object[0]); + + target.afterEvaluate(project1 -> { + AppExtension appExtension = ((AppExtension) project1.getExtensions().findByName(PluginConstants.ANDROID_EXTENSION_NAME)); + if (appExtension == null) { + return; + } + DomainObjectSet appVariants = appExtension.getApplicationVariants(); + for (ApplicationVariant applicationVariant : appVariants) { + if (applicationVariant.getBuildType() != null) { + dependsOnTask(applicationVariant, true, project1); + } + } + }); + OnlyUploadTask uploadTask = target.getTasks() + .create(PluginConstants.TASK_EXTENSION_NAME_ONLY_UPLOAD, OnlyUploadTask.class); + uploadTask.init( null, target); + } + + + private void dependsOnTask(ApplicationVariant applicationVariant, boolean isInit, Project project1) { + String variantName = + applicationVariant.getName().substring(0, 1).toUpperCase() + applicationVariant.getName().substring(1); + if (variantName.isEmpty()) { + variantName ="Release" ; + } + //创建我们,上传到蒲公英的task任务 + OnlyUploadTask uploadTask = project1.getTasks() + .create(PluginConstants.TASK_EXTENSION_NAME + variantName, OnlyUploadTask.class); + uploadTask.init( isInit?applicationVariant:null, project1); + //依赖关系 。上传依赖打包,打包依赖clean。 + if (isInit){ + applicationVariant.getAssembleProvider().get().dependsOn(project1.getTasks().findByName("clean")); + uploadTask.dependsOn(applicationVariant.getAssembleProvider().get()); + } + } + +} diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/entry/BaseResult.java b/app/src/main/java/com/trubitpro/uploadapkplugin/entry/BaseResult.java new file mode 100644 index 0000000..e0bf544 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/entry/BaseResult.java @@ -0,0 +1,29 @@ +package com.trubitpro.uploadapkplugin.entry; + +import com.google.gson.annotations.SerializedName; + + + public class BaseResult { + + @SerializedName("code") + private Integer code; + @SerializedName("message") + private String message; + + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/entry/LarkResult.java b/app/src/main/java/com/trubitpro/uploadapkplugin/entry/LarkResult.java new file mode 100644 index 0000000..3067733 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/entry/LarkResult.java @@ -0,0 +1,38 @@ +package com.trubitpro.uploadapkplugin.entry; + +import com.google.gson.annotations.SerializedName; + + +public class LarkResult { + + @SerializedName("code") + private Integer code; + @SerializedName("data") + private String data; + @SerializedName("msg") + private String msg; + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getData() { + return data; + } + + public void setData(String data) { + this.data = data; + } +} diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/entry/PgyCOSTokenResult.java b/app/src/main/java/com/trubitpro/uploadapkplugin/entry/PgyCOSTokenResult.java new file mode 100644 index 0000000..8d95757 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/entry/PgyCOSTokenResult.java @@ -0,0 +1,89 @@ +package com.trubitpro.uploadapkplugin.entry; + +import com.google.gson.annotations.SerializedName; + +/** + * Created by center + * 2021-09-03. + * + */ +public class PgyCOSTokenResult extends BaseResult { + + + @SerializedName("data") + private DataDTO data; + + public DataDTO getData() { + return data; + } + + public void setData(DataDTO data) { + this.data = data; + } + + public static class DataDTO { + @SerializedName("params") + private ParamsDTO params; + @SerializedName("key") + private String key; + @SerializedName("endpoint") + private String endpoint; + + public ParamsDTO getParams() { + return params; + } + + public void setParams(ParamsDTO params) { + this.params = params; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getEndpoint() { + return endpoint; + } + + public void setEndpoint(String endpoint) { + this.endpoint = endpoint; + } + + public static class ParamsDTO { + @SerializedName("signature") + private String signature; + @SerializedName("x-cos-security-token") + private String xcossecuritytoken; + @SerializedName("key") + private String key; + + public String getSignature() { + return signature; + } + + public void setSignature(String signature) { + this.signature = signature; + } + + public String getXcossecuritytoken() { + return xcossecuritytoken; + } + + public void setXcossecuritytoken(String xcossecuritytoken) { + this.xcossecuritytoken = xcossecuritytoken; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/entry/lark/ElementsDTO.java b/app/src/main/java/com/trubitpro/uploadapkplugin/entry/lark/ElementsDTO.java new file mode 100644 index 0000000..fbacddc --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/entry/lark/ElementsDTO.java @@ -0,0 +1,60 @@ +package com.trubitpro.uploadapkplugin.entry.lark; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + + +public class ElementsDTO { + + @SerializedName("tag") + private String tag; + @SerializedName("text") + private TextDTO text; + @SerializedName("type") + private String type; + @SerializedName("url") + private String url; + @SerializedName("actions") + private List actions; + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public TextDTO getText() { + return text; + } + + public void setText(TextDTO text) { + this.text = text; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public List getActions() { + return actions; + } + + public void setActions(List actions) { + this.actions = actions; + } +} diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/entry/lark/LarkRequestBean.java b/app/src/main/java/com/trubitpro/uploadapkplugin/entry/lark/LarkRequestBean.java new file mode 100644 index 0000000..cc61606 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/entry/lark/LarkRequestBean.java @@ -0,0 +1,309 @@ +package com.trubitpro.uploadapkplugin.entry.lark; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +public class LarkRequestBean { + + @SerializedName("msg_type") + private String msg_type; + @SerializedName("content") + private ContentDTO content; + @SerializedName("card") + private CardDTO card; + + public String getMsg_type() { + return msg_type; + } + + public void setMsg_type(String msg_type) { + this.msg_type = msg_type; + } + + public ContentDTO getContent() { + return content; + } + + public void setContent(ContentDTO content) { + this.content = content; + } + + public CardDTO getCard() { + return card; + } + + public void setCard(CardDTO card) { + this.card = card; + } + + public static class ContentDTO { + @SerializedName("post") + private PostDTO post; + + public PostDTO getPost() { + return post; + } + + public void setPost(PostDTO post) { + this.post = post; + } + + public static class PostDTO { + @SerializedName("zh_cn") + public ZhCnDTO zh_cn; + + public ZhCnDTO getZh_cn() { + return zh_cn; + } + + public void setZh_cn(ZhCnDTO zh_cn) { + this.zh_cn = zh_cn; + } + + public static class ZhCnDTO { + @SerializedName("title") + private String title; + @SerializedName("content") + private List> content; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public List> getContent() { + return content; + } + + public void setContent(List> content) { + this.content = content; + } + + public static class ContentBean { + @SerializedName("tag") + private String tag; + @SerializedName("text") + private String text; + @SerializedName("href") + private String href; + @SerializedName("user_id") + private String user_id; + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getHref() { + return href; + } + + public void setHref(String href) { + this.href = href; + } + + public String getUser_id() { + return user_id; + } + + public void setUser_id(String user_id) { + this.user_id = user_id; + } + } + } + } + + } + + public static class CardDTO { + @SerializedName("config") + private ConfigDTO config; + @SerializedName("header") + private HeaderDTO header; + @SerializedName("elements") + private List elements; + + public ConfigDTO getConfig() { + return config; + } + + public void setConfig(ConfigDTO config) { + this.config = config; + } + + public HeaderDTO getHeader() { + return header; + } + + public void setHeader(HeaderDTO header) { + this.header = header; + } + + public List getElements() { + return elements; + } + + public void setElements(List elements) { + this.elements = elements; + } + + public static class PostDTO { + @SerializedName("zh_cn") + public ZhCnDTO zh_cn; + + public ZhCnDTO getZh_cn() { + return zh_cn; + } + + public void setZh_cn(ZhCnDTO zh_cn) { + this.zh_cn = zh_cn; + } + + public static class ZhCnDTO { + @SerializedName("title") + private String title; + @SerializedName("content") + private List> content; + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public List> getContent() { + return content; + } + + public void setContent(List> content) { + this.content = content; + } + + public static class ContentBean { + @SerializedName("tag") + private String tag; + @SerializedName("text") + private String text; + @SerializedName("href") + private String href; + @SerializedName("user_id") + private String user_id; + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getHref() { + return href; + } + + public void setHref(String href) { + this.href = href; + } + + public String getUser_id() { + return user_id; + } + + public void setUser_id(String user_id) { + this.user_id = user_id; + } + } + } + } + + public static class ConfigDTO { + @SerializedName("wide_screen_mode") + private boolean wide_screen_mode; + @SerializedName("enable_forward") + private boolean enable_forward; + + public boolean isWide_screen_mode() { + return wide_screen_mode; + } + + public void setWide_screen_mode(boolean wide_screen_mode) { + this.wide_screen_mode = wide_screen_mode; + } + + public boolean isEnable_forward() { + return enable_forward; + } + + public void setEnable_forward(boolean enable_forward) { + this.enable_forward = enable_forward; + } + } + + public static class HeaderDTO { + @SerializedName("title") + private TextDTO title; + /** + * 颜色值 + *

+ * blue + * wathet + * turquoise + * green + * yellow + * orange + * red + * carmine + * violet + * purple + * indigo + * grey + */ + @SerializedName("template") + private String template; + + public TextDTO getTitle() { + return title; + } + + public void setTitle(TextDTO title) { + this.title = title; + } + + public String getTemplate() { + return template; + } + + public void setTemplate(String template) { + this.template = template; + } + } + + + } + +} diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/entry/lark/TextDTO.java b/app/src/main/java/com/trubitpro/uploadapkplugin/entry/lark/TextDTO.java new file mode 100644 index 0000000..9d908b4 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/entry/lark/TextDTO.java @@ -0,0 +1,28 @@ +package com.trubitpro.uploadapkplugin.entry.lark; + +import com.google.gson.annotations.SerializedName; + + +public class TextDTO { + + @SerializedName("content") + private String content; + @SerializedName("tag") + private String tag; + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } +} diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/help/CmdHelper.java b/app/src/main/java/com/trubitpro/uploadapkplugin/help/CmdHelper.java new file mode 100644 index 0000000..06be807 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/help/CmdHelper.java @@ -0,0 +1,163 @@ +package com.trubitpro.uploadapkplugin.help; + +import com.trubitpro.uploadapkplugin.pramars.GitLogParams; + + +import org.gradle.api.Project; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; + + +public class CmdHelper { + private static final int LOG_MAX_COUNT = 50; + private static final int LOG_MIN_COUNT = 10; + private static final String GIT_LOG_BASIC_CMD = "git log --oneline --pretty=format:\"%an—>%s\" --no-merges"; + public static final String gitLogCmd = GIT_LOG_BASIC_CMD + " --since=\"2022-8-30\" --until=\"2022-9-1\""; + /** + * %ai 是时间,格式:2022-08-31 23:18:48 +0800 + */ + public static final String gitLogCmd2 = "git log --oneline --pretty=format:\"%ai,%an:%s\" --no-merges --since=2days"; + public static final String gitLogCmd3 = GIT_LOG_BASIC_CMD + " --max-count=10"; + + public static String checkGetGitParamsWithLog(Project project) { + GitLogParams gitLogParams = GitLogParams.getGitParamsConfig(project); + if (gitLogParams == null) { + return ""; + } + return getGitLogByTimeAndCount(gitLogParams.gitLogHistoryDayTime, gitLogParams.gitLogMaxCount); + } + + public static String getGitLogByTimeAndCount(int logDayTime, int logMaxCount) { + StringBuilder logBuilder = new StringBuilder(GIT_LOG_BASIC_CMD); + if (logDayTime >= 1) { + logBuilder.append(" --since=").append(logDayTime).append("days"); + logMaxCount = LOG_MAX_COUNT; + } else { + if (logMaxCount <= 0) { + logMaxCount = LOG_MIN_COUNT; + } else if (logMaxCount > LOG_MAX_COUNT) { + logMaxCount = LOG_MAX_COUNT; + } + } + logBuilder.append(" --max-count=").append(logMaxCount); + System.out.println("获取Git log 外部命令:\n" + logBuilder.toString()); + return exeCmd(logBuilder.toString()); + } + + + public static boolean exeBuildFlutterAar(){ + + BufferedReader bufferedReader = null; + Process p = null; + String cdFir="cd ../mexo_flutter_module&&pwd&&flutter clear&&flutter build aar"; + try { + p = Runtime.getRuntime().exec(cdFir ); + System.out.println("cdFir Start"); + Print(p,cdFir); + int exitVal = p.waitFor(); + System.out.println("cdFir End==="+exitVal); + if (exitVal==0){ + return true; + } + + } catch (Exception e) { + e.printStackTrace(); + System.out.println(e.getMessage()); + } finally { + if (bufferedReader != null) { + try { + bufferedReader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (p != null) { + try { + p.waitFor(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + return false; + + + } + + + private static void Print(Process p, String s){ + BufferedReader bufferedReader=null; + try { + bufferedReader = new BufferedReader(new InputStreamReader(p.getInputStream(), StandardCharsets.UTF_8)); + StringBuilder stringBuilder = new StringBuilder(); + String line; + int count = 0; + while ((line = bufferedReader.readLine()) != null) { + ++count; + stringBuilder.append(count).append(". ").append(line).append("\n "); + } + System.out.println( s+" result:\n" + stringBuilder); + } catch (Exception e) { + e.printStackTrace(); + System.out.println(e.getMessage()); + } finally { + if (bufferedReader != null) { + try { + bufferedReader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (p != null) { + try { + p.waitFor(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + } + + public static String exeCmd(String commandStr) { + BufferedReader bufferedReader = null; + Process p = null; + try { + //java 调用外部命令 + p = Runtime.getRuntime().exec(commandStr); + //Charset.forName("UTF-8") + bufferedReader = new BufferedReader(new InputStreamReader(p.getInputStream(), StandardCharsets.UTF_8)); + StringBuilder stringBuilder = new StringBuilder(); + String line; + int count = 0; + while ((line = bufferedReader.readLine()) != null) { + ++count; + stringBuilder.append(count).append(". ").append(line).append("\n "); + } + System.out.println("ExeCmd result:\n" + stringBuilder); + return stringBuilder.toString(); + } catch (Exception e) { + e.printStackTrace(); + System.out.println(e.getMessage()); + } finally { + if (bufferedReader != null) { + try { + bufferedReader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (p != null) { + try { + p.waitFor(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + return ""; + } + +} diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/help/HttpHelper.java b/app/src/main/java/com/trubitpro/uploadapkplugin/help/HttpHelper.java new file mode 100644 index 0000000..fe63430 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/help/HttpHelper.java @@ -0,0 +1,17 @@ +package com.trubitpro.uploadapkplugin.help; + +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; + +public class HttpHelper { + + + public static OkHttpClient getOkHttpClient() { + return new OkHttpClient.Builder() + .readTimeout(60, TimeUnit.SECONDS) + .connectTimeout(60, TimeUnit.SECONDS) + .writeTimeout(60, TimeUnit.SECONDS).build(); + } + +} diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/help/ProcessUtils.java b/app/src/main/java/com/trubitpro/uploadapkplugin/help/ProcessUtils.java new file mode 100644 index 0000000..7fcb16e --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/help/ProcessUtils.java @@ -0,0 +1,108 @@ +package com.trubitpro.uploadapkplugin.help; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeoutException; + +public class ProcessUtils { + /** + * @param timeout 超时时长 + * @param fileDir 所运行程序路径 + * @param command 程序所要执行的命令 + * 运行一个外部命令,返回状态.若超过指定的超时时间,抛出TimeoutException + */ + public static int executeProcess(final long timeout, File fileDir, final String command) + throws IOException, InterruptedException, TimeoutException { + Process process = Runtime.getRuntime().exec(command, null, fileDir); + Worker worker = new Worker(process); + worker.start(); + try { + worker.join(timeout); + if (worker.exit != null){ + return worker.exit; + } else{ + throw new TimeoutException(); + } + } catch (InterruptedException ex) { + worker.interrupt(); + Thread.currentThread().interrupt(); + throw ex; + } + finally { + process.destroy(); + } + } + +private static class Worker extends Thread { + private final Process process; + private Integer exit; + + private Worker(Process process) { + this.process = process; + } + + @Override + public void run() { + InputStream errorStream = null; + InputStream inputStream = null; + try { + errorStream = process.getErrorStream(); + inputStream = process.getInputStream(); + readStreamInfo(errorStream, inputStream); + exit = process.waitFor(); + process.destroy(); + if (exit == 0) { + System.out.println("子进程正常完成"); + } else { + System.out.println("子进程异常结束"); + } + } catch (InterruptedException ignore) { + return; + } + } +} + + /** + * 读取RunTime.exec运行子进程的输入流 和 异常流 + * @param inputStreams 输入流 + */ + public static void readStreamInfo(InputStream... inputStreams){ + ExecutorService executorService = Executors.newFixedThreadPool(inputStreams.length); + for (InputStream in : inputStreams) { + executorService.execute(new MyThread(in)); + } + executorService.shutdown(); + } + public static class MyThread implements Runnable { + + private InputStream in; + public MyThread(InputStream in){ + this.in = in; + } + + @Override + public void run() { + try{ + BufferedReader br = new BufferedReader(new InputStreamReader(in, "GBK")); + String line = null; + while((line = br.readLine())!=null){ + System.out.println(" inputStream: " + line); + } + }catch (IOException e){ + e.printStackTrace(); + }finally { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/help/SendMsgHelper.java b/app/src/main/java/com/trubitpro/uploadapkplugin/help/SendMsgHelper.java new file mode 100644 index 0000000..86c75e9 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/help/SendMsgHelper.java @@ -0,0 +1,203 @@ +package com.trubitpro.uploadapkplugin.help; + +import com.android.build.gradle.api.BaseVariant; +import com.trubitpro.uploadapkplugin.entry.lark.ElementsDTO; +import com.trubitpro.uploadapkplugin.entry.lark.LarkRequestBean; +import com.trubitpro.uploadapkplugin.entry.lark.TextDTO; +import com.trubitpro.uploadapkplugin.pramars.SendLarkParams; +import org.gradle.api.Project; +import java.util.ArrayList; +import java.util.List; +import groovy.json.JsonOutput; +import okhttp3.MediaType; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + +public final class SendMsgHelper { + public static void sendMsgToLark(BaseVariant variant, Project project, String dataDTO, String gitLog) { + String defaultTitle = "测试包"; + String defaultText = "最新开发测试包已上传 "; + String defaultClickText = "点我进行下载"; + String defaultLogTitle = "最近Git更新内容:\n "; + SendLarkParams feishuParams = SendLarkParams.getLarkParamsConfig(project); + String webHookHostUrl = feishuParams.webHookHostUrl; + if ( isEmpty(webHookHostUrl)) { + System.out.println("send to lark failure:webHookHostUrl is empty"); + return; + } + String flavorStr = getFlavorInfo(variant); + String title = feishuParams.contentTitle; + if (isEmpty(title)) { + title = defaultTitle; + } + String titleStr = flavorStr ; + String text = feishuParams.contentText; + if ( isEmpty(text)) { + text = defaultText; + } + StringBuilder textStr = new StringBuilder("**").append(title).append( "\n").append(text).append("** ").append(dataDTO).append(" \n"); + LarkRequestBean larkRequestBean = new LarkRequestBean(); + if ("interactive".equals(feishuParams.msgtype)) { + LarkRequestBean.CardDTO cardDTO = new LarkRequestBean.CardDTO(); + + larkRequestBean.setMsg_type("interactive"); + LarkRequestBean.CardDTO.ConfigDTO cardConfigBean = new LarkRequestBean.CardDTO.ConfigDTO(); + cardConfigBean.setWide_screen_mode(true); + cardConfigBean.setEnable_forward(true); + cardDTO.setConfig(cardConfigBean); + LarkRequestBean.CardDTO.HeaderDTO cardHeaderBean = new LarkRequestBean.CardDTO.HeaderDTO(); + cardHeaderBean.setTemplate("green"); + TextDTO cardHeaderTitleBean = new TextDTO(); + cardHeaderTitleBean.setTag("plain_text"); + String rocket="\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80\uD83D\uDE80 "; + cardHeaderTitleBean.setContent(rocket +"\n"+ titleStr); + cardHeaderBean.setTitle(cardHeaderTitleBean); + cardDTO.setHeader(cardHeaderBean); + List elementsDTOList = new ArrayList<>(); + ElementsDTO elements1 = new ElementsDTO(); + elements1.setTag("div"); + TextDTO elements1TextBean = new TextDTO(); + elements1TextBean.setTag("lark_md"); + + String QRCode="https://cli.im/api/qrcode/code?text="+dataDTO+"&mhid=skKRBVu8y54hMHYoI9dQMKo"; + + textStr.append("![").append( isEmpty(feishuParams.clickTxt) ? defaultClickText : feishuParams.clickTxt) + .append("]").append("(").append(dataDTO).append(")").append(""); +// textStr.append("![").append( "").append("(").append(dataDTO).append(")"); + +// textStr.append("[查看下载二维码]").append("(").append(QRCode).append(")"); + if (feishuParams.isAtAll) { + textStr.append(" \n").append(""); + } + elements1TextBean.setContent(textStr.toString()); + elements1.setText(elements1TextBean); + elementsDTOList.add(elements1); + ElementsDTO elements2 = new ElementsDTO(); + + elements2.setTag("hr"); + elementsDTOList.add(elements2); + if (! isEmpty(gitLog) && feishuParams.isSupportGitLog) { + ElementsDTO elements3 = new ElementsDTO(); + elements3.setTag("div"); + TextDTO elements3TextBean = new TextDTO(); + elements3TextBean.setTag("lark_md"); + StringBuilder logStrBuilder = new StringBuilder("**").append(defaultLogTitle).append("**").append(gitLog); + elements3TextBean.setContent(logStrBuilder.toString()); + elements3.setText(elements3TextBean); + elementsDTOList.add(elements3); + ElementsDTO elements4 = new ElementsDTO(); + elements4.setTag("hr"); + elementsDTOList.add(elements4); + } + ElementsDTO elements5 = new ElementsDTO(); + elements5.setTag("action"); + List actionsList = new ArrayList<>(); + ElementsDTO actionBtnDownBtn = new ElementsDTO(); + actionBtnDownBtn.setTag("button"); + actionBtnDownBtn.setType("primary"); + actionBtnDownBtn.setUrl( dataDTO); + TextDTO actionDownBtnText = new TextDTO(); + actionDownBtnText.setTag("plain_text"); + actionDownBtnText.setContent( isEmpty(feishuParams.clickTxt) ? defaultClickText : feishuParams.clickTxt); + actionBtnDownBtn.setText(actionDownBtnText); + actionsList.add(actionBtnDownBtn); + + ElementsDTO actionBtnQRCodeBtn = new ElementsDTO(); + actionBtnQRCodeBtn.setTag("button"); + actionBtnQRCodeBtn.setType("primary"); + actionBtnQRCodeBtn.setUrl(QRCode); + TextDTO actionQRCodeBtnText = new TextDTO(); + actionQRCodeBtnText.setTag("plain_text"); + actionQRCodeBtnText.setContent("查看下载二维码"); + actionBtnQRCodeBtn.setText(actionQRCodeBtnText); + actionsList.add(actionBtnQRCodeBtn); + elements5.setActions(actionsList); + elementsDTOList.add(elements5); + cardDTO.setElements(elementsDTOList); + larkRequestBean.setCard(cardDTO); + } else { + LarkRequestBean.ContentDTO contentDTO = new LarkRequestBean.ContentDTO(); + + larkRequestBean.setMsg_type("post"); + LarkRequestBean.ContentDTO.PostDTO postDTO = new LarkRequestBean.ContentDTO.PostDTO(); + + LarkRequestBean.ContentDTO.PostDTO.ZhCnDTO.ContentBean contentBeanText = new LarkRequestBean.ContentDTO.PostDTO.ZhCnDTO.ContentBean(); + contentBeanText.setTag("text"); + contentBeanText.setText(textStr.toString()); + LarkRequestBean.ContentDTO.PostDTO.ZhCnDTO.ContentBean contentBeanA = new LarkRequestBean.ContentDTO.PostDTO.ZhCnDTO.ContentBean(); + contentBeanA.setTag("a"); + contentBeanA.setText( isEmpty(feishuParams.clickTxt) ? defaultClickText : feishuParams.clickTxt); + contentBeanA.setHref( dataDTO); + List< LarkRequestBean.ContentDTO.PostDTO.ZhCnDTO.ContentBean> contentBeans = new ArrayList<>(); + contentBeans.add(contentBeanText); + contentBeans.add(contentBeanA); + if (feishuParams.isAtAll) { + LarkRequestBean.ContentDTO.PostDTO.ZhCnDTO.ContentBean contentBeanAt = new LarkRequestBean.ContentDTO.PostDTO.ZhCnDTO.ContentBean(); + contentBeanAt.setTag("at"); + contentBeanAt.setUser_id("all"); + contentBeans.add(contentBeanAt); + } + List> zhCnContentList = new ArrayList<>(); + zhCnContentList.add(contentBeans); + if (! isEmpty(gitLog) && feishuParams.isSupportGitLog) { + List< LarkRequestBean.ContentDTO.PostDTO.ZhCnDTO.ContentBean> contentGitLogBeans = new ArrayList<>(); + LarkRequestBean.ContentDTO.PostDTO.ZhCnDTO.ContentBean contentGitLogBeanText = new LarkRequestBean.ContentDTO.PostDTO.ZhCnDTO.ContentBean(); + contentGitLogBeanText.setTag("text"); + contentGitLogBeanText.setText("** " + defaultLogTitle + gitLog); + contentGitLogBeans.add(contentGitLogBeanText); + zhCnContentList.add(contentGitLogBeans); + } + + LarkRequestBean.ContentDTO.PostDTO.ZhCnDTO zhCnDTO = new LarkRequestBean.ContentDTO.PostDTO.ZhCnDTO(); + zhCnDTO.setTitle(titleStr.toString()); + zhCnDTO.setContent(zhCnContentList); + postDTO.setZh_cn(zhCnDTO); + contentDTO.setPost(postDTO); + larkRequestBean.setContent(contentDTO); + } + + + /** + * text 文本 + * post 富文本 发送富文本消息 + * image 图片 上传图片 + * share_chat 分享群名片 群名片 + * interactive 消息卡片 消息卡片消息 + */ + String json = JsonOutput.toJson(larkRequestBean); + System.out.println("send to lark request json:" + json); + RequestBody requestBody = RequestBody.create(MediaType.parse("application/json;charset=UTF-8"), json); + Request request = new Request.Builder() + .addHeader("Connection", "Keep-Alive") + .addHeader("Charset", "UTF-8") + .url(webHookHostUrl) + .post(requestBody) + .build(); + try { + Response response = HttpHelper.getOkHttpClient().newCall(request).execute(); + if (response.isSuccessful() && response.body() != null) { + String result = response.body().string(); + System.out.println("send to lark result:" + result); + } else { + System.out.println("send to lark failure"); + } + System.out.println("*************** sendMsgToLark finish ***************"); + } catch (Exception e) { + System.out.println("send to lark failure " + e); + } + } + + private static String getFlavorInfo(BaseVariant variant) { + String flavor = isEmpty(variant.getName()) ? variant.getFlavorName() : variant.getName(); + return isEmpty(flavor) ? "" : "(FlavorName:" + flavor + ")"; + } + public static boolean isEmpty(CharSequence s) { + if (s == null) { + return true; + } else { + return s.length() == 0; + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/pramars/GitLogParams.java b/app/src/main/java/com/trubitpro/uploadapkplugin/pramars/GitLogParams.java new file mode 100644 index 0000000..b5d6ae6 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/pramars/GitLogParams.java @@ -0,0 +1,25 @@ +package com.trubitpro.uploadapkplugin.pramars; + +import org.gradle.api.Project; + +/** + * 设置获取Git日志的参数 + */ +public class GitLogParams { + + /** + * 获取以当前时间为准的,多少天之前的Git记录,默认-1为全部,会结合数量进行获取 + */ + public int gitLogHistoryDayTime = -1; + + /** + * Git记录的最大数量 + */ + public int gitLogMaxCount = 10; + + public static GitLogParams getGitParamsConfig(Project project) { + GitLogParams extension = project.getExtensions().findByType(GitLogParams.class); + return extension; + } + +} diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/pramars/SendLarkParams.java b/app/src/main/java/com/trubitpro/uploadapkplugin/pramars/SendLarkParams.java new file mode 100644 index 0000000..d312440 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/pramars/SendLarkParams.java @@ -0,0 +1,44 @@ +package com.trubitpro.uploadapkplugin.pramars; + + +import org.gradle.api.Project; + +/** + * 发送到飞书的消息参数 + */ +public class SendLarkParams { + + public String webHookHostUrl; + public String contentTitle; + public String contentText; + public String msgtype = "post"; + public boolean isAtAll = false; + public String clickTxt = "点我进行下载"; + /** + * 是否支持发送git记录 + */ + public boolean isSupportGitLog = true; + + public SendLarkParams() { + + } + + public SendLarkParams(String webHookHostUrl, String contentTitle, String contentText, String msgtype, boolean isAtAll, String clickTxt) { + this.webHookHostUrl = webHookHostUrl; + this.contentText = contentText; + this.contentTitle = contentTitle; + this.msgtype = msgtype; + this.isAtAll = isAtAll; + this.clickTxt = clickTxt; + } + + public static SendLarkParams getLarkParamsConfig(Project project) { + + SendLarkParams extension = project.getExtensions().findByType(SendLarkParams.class); + if (extension == null) { + extension = new SendLarkParams(); + } + return extension; + } + +} diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/pramars/TrubitProParams.java b/app/src/main/java/com/trubitpro/uploadapkplugin/pramars/TrubitProParams.java new file mode 100644 index 0000000..f560b69 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/pramars/TrubitProParams.java @@ -0,0 +1,6 @@ +package com.trubitpro.uploadapkplugin.pramars; + +public class TrubitProParams { + + +} diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/pramars/UploadPgyParams.java b/app/src/main/java/com/trubitpro/uploadapkplugin/pramars/UploadPgyParams.java new file mode 100644 index 0000000..ca1ec93 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/pramars/UploadPgyParams.java @@ -0,0 +1,66 @@ +package com.trubitpro.uploadapkplugin.pramars; + +import org.gradle.api.Project; + + +//插件外部传入的参数 + +public class UploadPgyParams { + + //(必填) API Key 点击获取_api_key + public String apiKey; + public String appName; + public String buildTypeName;//非蒲公英参数,用于控制打包release还是debug,默认1是release,2是debug + //(选填)应用安装方式,值为(1,2,3,默认为1 公开安装)。1:公开安装,2:密码安装,3:邀请安装 + public int buildInstallType = 1; + //(选填) 设置App安装密码,密码为空时默认公开安装 + public String buildPassword; + //(选填) 版本更新描述,请传空字符串,或不传。 + public String buildUpdateDescription; + //(选填)是否设置安装有效期,值为:1 设置有效时间, 2 长期有效,如果不填写不修改上一次的设置 + public int buildInstallDate = 2; + //(选填)所需更新的指定渠道的下载短链接,只可指定一个渠道,字符串型,如:abcd + public String buildChannelShortcut; + + public String uploadApkFilePath; + + public UploadPgyParams() { + + } + + public UploadPgyParams(String apiKey) { + this(apiKey, "Release"); + } + + public UploadPgyParams(String apiKey, String buildTypeName) { + this(apiKey, "", buildTypeName, 1, ""); + } + + public UploadPgyParams(String apiKey, String appName, String buildTypeName, int buildInstallType, String buildPassword) { + this(apiKey, appName, buildTypeName, buildInstallType, buildPassword, ""); + } + + public UploadPgyParams(String apiKey, String appName, String buildTypeName, int buildInstallType, String buildPassword, String buildUpdateDescription) { + this(apiKey, appName, buildTypeName, buildInstallType, buildPassword, buildUpdateDescription, 2, ""); + } + + public UploadPgyParams(String apiKey, String appName, String buildTypeName, int buildInstallType, String buildPassword, String buildUpdateDescription, int buildInstallDate, String buildChannelShortcut) { + this.apiKey = apiKey; + this.appName = appName; + this.buildTypeName = buildTypeName; + this.buildInstallType = buildInstallType; + this.buildPassword = buildPassword; + this.buildUpdateDescription = buildUpdateDescription; + this.buildInstallDate = buildInstallDate; + this.buildChannelShortcut = buildChannelShortcut; + } + + public static UploadPgyParams getConfig(Project project) { + UploadPgyParams extension = project.getExtensions().findByType(UploadPgyParams.class); + if (extension == null) { + extension = new UploadPgyParams(); + } + return extension; + } + +} diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/task/BaseTask.java b/app/src/main/java/com/trubitpro/uploadapkplugin/task/BaseTask.java new file mode 100644 index 0000000..2180ad0 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/task/BaseTask.java @@ -0,0 +1,107 @@ +package com.trubitpro.uploadapkplugin.task; + + + +import com.android.build.gradle.api.BaseVariant; +import com.google.gson.Gson; +import com.trubitpro.uploadapkplugin.PluginConstants; +import com.trubitpro.uploadapkplugin.entry.LarkResult; +import com.trubitpro.uploadapkplugin.entry.PgyCOSTokenResult; +import com.trubitpro.uploadapkplugin.help.CmdHelper; +import com.trubitpro.uploadapkplugin.help.HttpHelper; +import com.trubitpro.uploadapkplugin.help.SendMsgHelper; + + +import org.gradle.api.DefaultTask; +import org.gradle.api.Project; + +import java.io.File; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import okhttp3.FormBody; +import okhttp3.HttpUrl; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + +/** + * Created by Android-ZX + * 2021/9/3. + */ +public class BaseTask extends DefaultTask { + + protected BaseVariant mVariant; + protected Project mTargetProject; + + public void init(BaseVariant variant, Project project) { + this.mVariant = variant; + this.mTargetProject = project; + setDescription(PluginConstants.TASK_DES); + setGroup(PluginConstants.TASK_GROUP_NAME); + } + + + /** + * 快速上传方式 获取上传的 token + * @param apkFile + */ + public void uploadPgyQuickWay(File apkFile) { + //builder + + RequestBody fileBody = RequestBody.create(MediaType.parse("*/*"), apkFile); + String name = apkFile.getName(); //文件名称 + try { + name = URLEncoder.encode(name, "UTF-8"); //文件名称编码,防止出现中文乱码 + } catch (UnsupportedEncodingException e1) { + //TODO + } + MultipartBody mBody = new MultipartBody.Builder() + .setType(MultipartBody.FORM) + .addFormDataPart("file" , name , fileBody) + .build(); + Request request = new Request.Builder() + .url("https://test-api.trubit.com/member-api/api/v1/uploadApp") + .post(mBody) + .build(); + + + try { + Response response = HttpHelper.getOkHttpClient().newCall(request).execute(); + if (response.isSuccessful()) { + String result = response.body().string(); + System.out.println("TrubitPro --- result: " + result); + if (!result.isEmpty()) { + LarkResult larkResult = new Gson().fromJson(result, LarkResult.class); + if (larkResult.getCode() != 0 ) { + System.out.println("TrubitPro --- upload error : " + larkResult.getMsg()); + return; + } + if (larkResult.getData() != null) { + String apkDownUrl = larkResult.getData(); + System.out.println("上传成功,应用链接: " + apkDownUrl); + String gitLog = CmdHelper.checkGetGitParamsWithLog(mTargetProject); + SendMsgHelper.sendMsgToLark(mVariant, mTargetProject, larkResult.getData(), gitLog); + } else { + System.out.println("TrubitPro --- buildInfo: upload pgy result error : data is empty"); + } + } + } else { + System.out.println(response.toString()); + System.out.println("TrubitPro ---- request 上传 call failed"); + } + System.out.println("******************* TrubitPro: finish *******************"); + } catch (Exception e) { + System.out.println("TrubitPro ---- request 上传 call failed " + e); + } + } + + + + + +} \ No newline at end of file diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/task/OnlyUploadTask.java b/app/src/main/java/com/trubitpro/uploadapkplugin/task/OnlyUploadTask.java new file mode 100644 index 0000000..5a1b44c --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/task/OnlyUploadTask.java @@ -0,0 +1,51 @@ +package com.trubitpro.uploadapkplugin.task; + + +import com.android.build.gradle.api.BaseVariantOutput; +import com.trubitpro.uploadapkplugin.pramars.UploadPgyParams; + + +import org.gradle.api.GradleException; +import org.gradle.api.tasks.TaskAction; + +import java.io.File; +import java.util.Objects; + +/** + * Created by Android-ZX + * 2021/9/3. + */ +public class OnlyUploadTask extends BaseTask { + + @TaskAction + public void uploadToPGY() { + + for (BaseVariantOutput output : mVariant.getOutputs()) { + File apkDir = output.getOutputFile(); + if (apkDir == null || !apkDir.exists()) { + throw new GradleException("The compiled APK file to upload does not exist!"); + } + System.out.println("ApkDir path: " + apkDir.getAbsolutePath()); + File apk = null; + if (apkDir.getName().endsWith(".apk")) { + apk = apkDir; + } else { + if (apkDir.listFiles() != null) { + for (int i = Objects.requireNonNull(apkDir.listFiles()).length - 1; i >= 0; i--) { + File apkFile = Objects.requireNonNull(apkDir.listFiles())[i]; + if (apkFile != null && apkFile.exists() && apkFile.getName().endsWith(".apk")) { + apk = apkFile; + break; + } + } + } + } + if (apk == null || !apk.exists()) { + throw new GradleException("The compiled APK file to upload does not exist!"); + } + System.out.println("Final upload apk path: " + apk.getAbsolutePath()); + uploadPgyQuickWay( apk); + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/trubitpro/uploadapkplugin/test.java b/app/src/main/java/com/trubitpro/uploadapkplugin/test.java new file mode 100644 index 0000000..285fd66 --- /dev/null +++ b/app/src/main/java/com/trubitpro/uploadapkplugin/test.java @@ -0,0 +1,15 @@ +package com.trubitpro.uploadapkplugin; + +import com.trubitpro.uploadapkplugin.task.BaseTask; + +import java.io.File; + +public class test { + + + public static void main(String[] args) { + BaseTask baseTask=new BaseTask(); + File baseFile=new File("/Users/wuao/AndroidStudioProjects/MyApplication3/app/build/outputs/apk/Facebook/debug/app-Facebook-debug.apk"); + baseTask .uploadPgyQuickWay(baseFile); + } +} diff --git a/app/src/main/resources/META-INF/gradle-plugins/center.uploadpgy.plugin.properties b/app/src/main/resources/META-INF/gradle-plugins/center.uploadpgy.plugin.properties new file mode 100644 index 0000000..91d279e --- /dev/null +++ b/app/src/main/resources/META-INF/gradle-plugins/center.uploadpgy.plugin.properties @@ -0,0 +1 @@ +implementation-class=com.trubitpro.uploadapkplugin.UploadApkPlugin \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..c48c27d --- /dev/null +++ b/build.gradle @@ -0,0 +1,22 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + google() + mavenCentral() + gradlePluginPortal() + maven { url 'https://jitpack.io' } + jcenter() // Warning: this repository is going to shut down soon + } + + dependencies { + classpath "com.android.tools.build:gradle:4.1.2" + classpath "com.github.dcendents:android-maven-gradle-plugin:2.1" + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +// Top-level build file where you can add configuration options common to all sub-projects/modules. + plugins { + id 'org.jetbrains.kotlin.android' version '1.8.0' apply false +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..61ba924 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,24 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true +android.disableAutomaticComponentCreation=true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..01c7580 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Sep 04 10:39:02 CST 2023 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..4f906e0 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..ac1b06f --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..fa982152a54a89758e0d61d5f8c7469d9d42d416 GIT binary patch literal 36367 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 Nf3*>OjrQiv{|5@B;|Bl$ literal 0 HcmV?d00001 diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.md5 b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.md5 new file mode 100644 index 0000000..7970c62 --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.md5 @@ -0,0 +1 @@ +cccaa0dcafa9b64122828864c05bf8fd \ No newline at end of file diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.sha1 b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.sha1 new file mode 100644 index 0000000..f8fcac6 --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.sha1 @@ -0,0 +1 @@ +6e5fbd734581f465167256ac5e69ce58072e1961 \ No newline at end of file diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.sha256 b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.sha256 new file mode 100644 index 0000000..d875342 --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.sha256 @@ -0,0 +1 @@ +7a2446ca584281d76a1dd539d7d412f7075279f47991955e7165c61831214786 \ No newline at end of file diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.sha512 b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.sha512 new file mode 100644 index 0000000..0990beb --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.jar.sha512 @@ -0,0 +1 @@ +a77055aa6ecbd7d28fba76ebe89eb8e1cbae4266e489b3dc482778cb69169fa253dbe0091f55672b9b5afd5ae235834d5eee63dfffcdaafc2c20db3c5494b8b7 \ No newline at end of file diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module new file mode 100644 index 0000000..11768fa --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module @@ -0,0 +1,90 @@ +{ + "formatVersion": "1.1", + "component": { + "group": "center.uploadpgy.plugin", + "module": "UploadApkPlugin", + "version": "1.0.0", + "attributes": { + "org.gradle.status": "release" + } + }, + "createdBy": { + "gradle": { + "version": "8.0" + } + }, + "variants": [ + { + "name": "apiElements", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.jvm.version": 8, + "org.gradle.libraryelements": "jar", + "org.gradle.usage": "java-api" + }, + "files": [ + { + "name": "UploadApkPlugin-1.0.0.jar", + "url": "UploadApkPlugin-1.0.0.jar", + "size": 36367, + "sha512": "a77055aa6ecbd7d28fba76ebe89eb8e1cbae4266e489b3dc482778cb69169fa253dbe0091f55672b9b5afd5ae235834d5eee63dfffcdaafc2c20db3c5494b8b7", + "sha256": "7a2446ca584281d76a1dd539d7d412f7075279f47991955e7165c61831214786", + "sha1": "6e5fbd734581f465167256ac5e69ce58072e1961", + "md5": "cccaa0dcafa9b64122828864c05bf8fd" + } + ] + }, + { + "name": "runtimeElements", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.jvm.version": 8, + "org.gradle.libraryelements": "jar", + "org.gradle.usage": "java-runtime" + }, + "dependencies": [ + { + "group": "com.android.tools.build", + "module": "gradle", + "version": { + "requires": "3.6.4" + } + }, + { + "group": "com.github.dcendents", + "module": "android-maven-gradle-plugin", + "version": { + "requires": "2.1" + } + }, + { + "group": "com.google.code.gson", + "module": "gson", + "version": { + "requires": "2.8.8" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp", + "version": { + "requires": "3.12.12" + } + } + ], + "files": [ + { + "name": "UploadApkPlugin-1.0.0.jar", + "url": "UploadApkPlugin-1.0.0.jar", + "size": 36367, + "sha512": "a77055aa6ecbd7d28fba76ebe89eb8e1cbae4266e489b3dc482778cb69169fa253dbe0091f55672b9b5afd5ae235834d5eee63dfffcdaafc2c20db3c5494b8b7", + "sha256": "7a2446ca584281d76a1dd539d7d412f7075279f47991955e7165c61831214786", + "sha1": "6e5fbd734581f465167256ac5e69ce58072e1961", + "md5": "cccaa0dcafa9b64122828864c05bf8fd" + } + ] + } + ] +} diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.md5 b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.md5 new file mode 100644 index 0000000..34e1031 --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.md5 @@ -0,0 +1 @@ +6c22a6af684f05524677f0ff0837b12f \ No newline at end of file diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.sha1 b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.sha1 new file mode 100644 index 0000000..7650efc --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.sha1 @@ -0,0 +1 @@ +8b1c1d59e1ebf31461710b67ed3659fb1f02cbe4 \ No newline at end of file diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.sha256 b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.sha256 new file mode 100644 index 0000000..0bee9c0 --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.sha256 @@ -0,0 +1 @@ +2f41bf1c5ea34f25cc38112cce092e9d601cdbe2f9c5d1ce9551da28daf58b26 \ No newline at end of file diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.sha512 b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.sha512 new file mode 100644 index 0000000..9f62d12 --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.module.sha512 @@ -0,0 +1 @@ +69b302ae7f0f079939cb0cf4fa3f9ed4ff2fecea1a34396396acb4c2638425eecf6d355dcc01b8eab7d12a46f9c5683e5b601bcbd9e359d07af7c4da1f77b8e9 \ No newline at end of file diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom new file mode 100644 index 0000000..e5220e7 --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom @@ -0,0 +1,39 @@ + + + + + + + + 4.0.0 + center.uploadpgy.plugin + UploadApkPlugin + 1.0.0 + + + com.android.tools.build + gradle + 3.6.4 + runtime + + + com.github.dcendents + android-maven-gradle-plugin + 2.1 + runtime + + + com.google.code.gson + gson + 2.8.8 + runtime + + + com.squareup.okhttp3 + okhttp + 3.12.12 + runtime + + + diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.md5 b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.md5 new file mode 100644 index 0000000..162a2bf --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.md5 @@ -0,0 +1 @@ +ffa263d116cefbdd53b480c708cab652 \ No newline at end of file diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.sha1 b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.sha1 new file mode 100644 index 0000000..750be1d --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.sha1 @@ -0,0 +1 @@ +b5e576f3a6f91dd8c8ea0b4396c4ffc9f57dcb4d \ No newline at end of file diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.sha256 b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.sha256 new file mode 100644 index 0000000..f6fe1a8 --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.sha256 @@ -0,0 +1 @@ +8e5b5cb69d7ae33e856469f3e442c3e0a88f1594ffbf1b71c5ecd5f11522878f \ No newline at end of file diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.sha512 b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.sha512 new file mode 100644 index 0000000..c44a7c2 --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/1.0.0/UploadApkPlugin-1.0.0.pom.sha512 @@ -0,0 +1 @@ +5d138065f8486e59b47b14855df06841654afbed1578848fa9fd64e98e0b9e077b631f9d14e57688fbb3c839a9619376dfb2f987b46ecaf6b831519dccd17c25 \ No newline at end of file diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml b/repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml new file mode 100644 index 0000000..16e17d5 --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml @@ -0,0 +1,13 @@ + + + center.uploadpgy.plugin + UploadApkPlugin + + 1.0.0 + 1.0.0 + + 1.0.0 + + 20230904095305 + + diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.md5 b/repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.md5 new file mode 100644 index 0000000..fb6ba91 --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.md5 @@ -0,0 +1 @@ +4e2865e77607500864620c3bdc5b4bda \ No newline at end of file diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.sha1 b/repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.sha1 new file mode 100644 index 0000000..00f2021 --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.sha1 @@ -0,0 +1 @@ +69490d899ede062a9e8e232866898c353cf62f17 \ No newline at end of file diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.sha256 b/repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.sha256 new file mode 100644 index 0000000..da7ed74 --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.sha256 @@ -0,0 +1 @@ +221cf4bacab8de71d3ec007add01e346c33b4ab12a1a21843feea8342b038079 \ No newline at end of file diff --git a/repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.sha512 b/repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.sha512 new file mode 100644 index 0000000..8542586 --- /dev/null +++ b/repo/center/uploadpgy/plugin/UploadApkPlugin/maven-metadata.xml.sha512 @@ -0,0 +1 @@ +47f1b5ba4377eddfcf99bf1ef2b37fd06d1568fe2df190c99faa74f719060ffb868c2bf43fa2ba35875e652b936d8bd8351978271ab51fef68c04e355e5e9781 \ No newline at end of file diff --git a/repo/uploadapkplugin/app/maven-metadata.xml b/repo/uploadapkplugin/app/maven-metadata.xml new file mode 100644 index 0000000..310f5c5 --- /dev/null +++ b/repo/uploadapkplugin/app/maven-metadata.xml @@ -0,0 +1,13 @@ + + + uploadapkplugin + app + + unspecified + unspecified + + unspecified + + 20230904095305 + + diff --git a/repo/uploadapkplugin/app/maven-metadata.xml.md5 b/repo/uploadapkplugin/app/maven-metadata.xml.md5 new file mode 100644 index 0000000..eaf7706 --- /dev/null +++ b/repo/uploadapkplugin/app/maven-metadata.xml.md5 @@ -0,0 +1 @@ +444dfb6c25acf10e41043c5cffe8b6e3 \ No newline at end of file diff --git a/repo/uploadapkplugin/app/maven-metadata.xml.sha1 b/repo/uploadapkplugin/app/maven-metadata.xml.sha1 new file mode 100644 index 0000000..c123be4 --- /dev/null +++ b/repo/uploadapkplugin/app/maven-metadata.xml.sha1 @@ -0,0 +1 @@ +e85b3fa10e5f197a197382ad8fdcac42c1a8623a \ No newline at end of file diff --git a/repo/uploadapkplugin/app/maven-metadata.xml.sha256 b/repo/uploadapkplugin/app/maven-metadata.xml.sha256 new file mode 100644 index 0000000..5ad81a3 --- /dev/null +++ b/repo/uploadapkplugin/app/maven-metadata.xml.sha256 @@ -0,0 +1 @@ +bcc123f1ee35601a10a3456e5c8c3e60235ce5b35639c589182d4437c1c56e87 \ No newline at end of file diff --git a/repo/uploadapkplugin/app/maven-metadata.xml.sha512 b/repo/uploadapkplugin/app/maven-metadata.xml.sha512 new file mode 100644 index 0000000..b2b1c52 --- /dev/null +++ b/repo/uploadapkplugin/app/maven-metadata.xml.sha512 @@ -0,0 +1 @@ +aacd68d959149111a6c4c3b9dcbe9236de1097ac174e81f41783b7e4928a122cb2c9546b398314dbd7a7ffe2debb16b9937a14bbff4dd3f0e0dde9743b67a3c4 \ No newline at end of file diff --git a/repo/uploadapkplugin/app/unspecified/app-unspecified.jar b/repo/uploadapkplugin/app/unspecified/app-unspecified.jar new file mode 100644 index 0000000000000000000000000000000000000000..fa982152a54a89758e0d61d5f8c7469d9d42d416 GIT binary patch literal 36367 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 Nf3*>OjrQiv{|5@B;|Bl$ literal 0 HcmV?d00001 diff --git a/repo/uploadapkplugin/app/unspecified/app-unspecified.jar.md5 b/repo/uploadapkplugin/app/unspecified/app-unspecified.jar.md5 new file mode 100644 index 0000000..7970c62 --- /dev/null +++ b/repo/uploadapkplugin/app/unspecified/app-unspecified.jar.md5 @@ -0,0 +1 @@ +cccaa0dcafa9b64122828864c05bf8fd \ No newline at end of file diff --git a/repo/uploadapkplugin/app/unspecified/app-unspecified.jar.sha1 b/repo/uploadapkplugin/app/unspecified/app-unspecified.jar.sha1 new file mode 100644 index 0000000..f8fcac6 --- /dev/null +++ b/repo/uploadapkplugin/app/unspecified/app-unspecified.jar.sha1 @@ -0,0 +1 @@ +6e5fbd734581f465167256ac5e69ce58072e1961 \ No newline at end of file diff --git a/repo/uploadapkplugin/app/unspecified/app-unspecified.jar.sha256 b/repo/uploadapkplugin/app/unspecified/app-unspecified.jar.sha256 new file mode 100644 index 0000000..d875342 --- /dev/null +++ b/repo/uploadapkplugin/app/unspecified/app-unspecified.jar.sha256 @@ -0,0 +1 @@ +7a2446ca584281d76a1dd539d7d412f7075279f47991955e7165c61831214786 \ No newline at end of file diff --git a/repo/uploadapkplugin/app/unspecified/app-unspecified.jar.sha512 b/repo/uploadapkplugin/app/unspecified/app-unspecified.jar.sha512 new file mode 100644 index 0000000..0990beb --- /dev/null +++ b/repo/uploadapkplugin/app/unspecified/app-unspecified.jar.sha512 @@ -0,0 +1 @@ +a77055aa6ecbd7d28fba76ebe89eb8e1cbae4266e489b3dc482778cb69169fa253dbe0091f55672b9b5afd5ae235834d5eee63dfffcdaafc2c20db3c5494b8b7 \ No newline at end of file diff --git a/repo/uploadapkplugin/app/unspecified/app-unspecified.module b/repo/uploadapkplugin/app/unspecified/app-unspecified.module new file mode 100644 index 0000000..78295d0 --- /dev/null +++ b/repo/uploadapkplugin/app/unspecified/app-unspecified.module @@ -0,0 +1,90 @@ +{ + "formatVersion": "1.1", + "component": { + "group": "uploadapkplugin", + "module": "app", + "version": "unspecified", + "attributes": { + "org.gradle.status": "release" + } + }, + "createdBy": { + "gradle": { + "version": "8.0" + } + }, + "variants": [ + { + "name": "apiElements", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.jvm.version": 8, + "org.gradle.libraryelements": "jar", + "org.gradle.usage": "java-api" + }, + "files": [ + { + "name": "app-unspecified.jar", + "url": "app-unspecified.jar", + "size": 36367, + "sha512": "a77055aa6ecbd7d28fba76ebe89eb8e1cbae4266e489b3dc482778cb69169fa253dbe0091f55672b9b5afd5ae235834d5eee63dfffcdaafc2c20db3c5494b8b7", + "sha256": "7a2446ca584281d76a1dd539d7d412f7075279f47991955e7165c61831214786", + "sha1": "6e5fbd734581f465167256ac5e69ce58072e1961", + "md5": "cccaa0dcafa9b64122828864c05bf8fd" + } + ] + }, + { + "name": "runtimeElements", + "attributes": { + "org.gradle.category": "library", + "org.gradle.dependency.bundling": "external", + "org.gradle.jvm.version": 8, + "org.gradle.libraryelements": "jar", + "org.gradle.usage": "java-runtime" + }, + "dependencies": [ + { + "group": "com.android.tools.build", + "module": "gradle", + "version": { + "requires": "3.6.4" + } + }, + { + "group": "com.github.dcendents", + "module": "android-maven-gradle-plugin", + "version": { + "requires": "2.1" + } + }, + { + "group": "com.google.code.gson", + "module": "gson", + "version": { + "requires": "2.8.8" + } + }, + { + "group": "com.squareup.okhttp3", + "module": "okhttp", + "version": { + "requires": "3.12.12" + } + } + ], + "files": [ + { + "name": "app-unspecified.jar", + "url": "app-unspecified.jar", + "size": 36367, + "sha512": "a77055aa6ecbd7d28fba76ebe89eb8e1cbae4266e489b3dc482778cb69169fa253dbe0091f55672b9b5afd5ae235834d5eee63dfffcdaafc2c20db3c5494b8b7", + "sha256": "7a2446ca584281d76a1dd539d7d412f7075279f47991955e7165c61831214786", + "sha1": "6e5fbd734581f465167256ac5e69ce58072e1961", + "md5": "cccaa0dcafa9b64122828864c05bf8fd" + } + ] + } + ] +} diff --git a/repo/uploadapkplugin/app/unspecified/app-unspecified.module.md5 b/repo/uploadapkplugin/app/unspecified/app-unspecified.module.md5 new file mode 100644 index 0000000..d6d18fc --- /dev/null +++ b/repo/uploadapkplugin/app/unspecified/app-unspecified.module.md5 @@ -0,0 +1 @@ +7bab39f11a42ba442118e18f359dd0a4 \ No newline at end of file diff --git a/repo/uploadapkplugin/app/unspecified/app-unspecified.module.sha1 b/repo/uploadapkplugin/app/unspecified/app-unspecified.module.sha1 new file mode 100644 index 0000000..3ea94e9 --- /dev/null +++ b/repo/uploadapkplugin/app/unspecified/app-unspecified.module.sha1 @@ -0,0 +1 @@ +3c648d9216e4bec5f10916ac454182514a4995e0 \ No newline at end of file diff --git a/repo/uploadapkplugin/app/unspecified/app-unspecified.module.sha256 b/repo/uploadapkplugin/app/unspecified/app-unspecified.module.sha256 new file mode 100644 index 0000000..0a24345 --- /dev/null +++ b/repo/uploadapkplugin/app/unspecified/app-unspecified.module.sha256 @@ -0,0 +1 @@ +6280baa9aa78321d7821ebc0a81a84e0381dca776fab6932de46f84163f9164d \ No newline at end of file diff --git a/repo/uploadapkplugin/app/unspecified/app-unspecified.module.sha512 b/repo/uploadapkplugin/app/unspecified/app-unspecified.module.sha512 new file mode 100644 index 0000000..d26b85c --- /dev/null +++ b/repo/uploadapkplugin/app/unspecified/app-unspecified.module.sha512 @@ -0,0 +1 @@ +eff87dae4bc9fb7cf1e4a1cfa8fb841362bbcfef03b9f5bc7c87c2edeebbafa425665cbf237ba2c74565bae03d1b9e2541c1ecb03771c19d3cc0b8a89450bf93 \ No newline at end of file diff --git a/repo/uploadapkplugin/app/unspecified/app-unspecified.pom b/repo/uploadapkplugin/app/unspecified/app-unspecified.pom new file mode 100644 index 0000000..6ddc9ec --- /dev/null +++ b/repo/uploadapkplugin/app/unspecified/app-unspecified.pom @@ -0,0 +1,39 @@ + + + + + + + + 4.0.0 + uploadapkplugin + app + unspecified + + + com.android.tools.build + gradle + 3.6.4 + runtime + + + com.github.dcendents + android-maven-gradle-plugin + 2.1 + runtime + + + com.google.code.gson + gson + 2.8.8 + runtime + + + com.squareup.okhttp3 + okhttp + 3.12.12 + runtime + + + diff --git a/repo/uploadapkplugin/app/unspecified/app-unspecified.pom.md5 b/repo/uploadapkplugin/app/unspecified/app-unspecified.pom.md5 new file mode 100644 index 0000000..75270b2 --- /dev/null +++ b/repo/uploadapkplugin/app/unspecified/app-unspecified.pom.md5 @@ -0,0 +1 @@ +580e21640c16ce9c641e849833f2025a \ No newline at end of file diff --git a/repo/uploadapkplugin/app/unspecified/app-unspecified.pom.sha1 b/repo/uploadapkplugin/app/unspecified/app-unspecified.pom.sha1 new file mode 100644 index 0000000..ba4f532 --- /dev/null +++ b/repo/uploadapkplugin/app/unspecified/app-unspecified.pom.sha1 @@ -0,0 +1 @@ +50c90881f534abfde4d2c81f8c827f52c211b245 \ No newline at end of file diff --git a/repo/uploadapkplugin/app/unspecified/app-unspecified.pom.sha256 b/repo/uploadapkplugin/app/unspecified/app-unspecified.pom.sha256 new file mode 100644 index 0000000..efdc3f3 --- /dev/null +++ b/repo/uploadapkplugin/app/unspecified/app-unspecified.pom.sha256 @@ -0,0 +1 @@ +2d9cefa4b8586b9fc260537f4eba7fa570c7c03b42ac766a1088d0e510952a88 \ No newline at end of file diff --git a/repo/uploadapkplugin/app/unspecified/app-unspecified.pom.sha512 b/repo/uploadapkplugin/app/unspecified/app-unspecified.pom.sha512 new file mode 100644 index 0000000..52c2997 --- /dev/null +++ b/repo/uploadapkplugin/app/unspecified/app-unspecified.pom.sha512 @@ -0,0 +1 @@ +43ca1ef1ee8240f1c3f67df87febc4690c4f4e20d2bc04225d3d5e690ff7af08a5cb90d549b8fd3ad15bf179b6304b5be7bd2de913c8bc21cc569c13f976d1c1 \ No newline at end of file diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..71aec1b --- /dev/null +++ b/settings.gradle @@ -0,0 +1,17 @@ +import org.gradle.api.initialization.resolve.RepositoriesMode + + +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.PREFER_PROJECT) + repositories { + google() + mavenCentral() + google() + jcenter() + maven { url 'https://jitpack.io' } + mavenCentral() + } +} + +//rootProject.name = "uploadapkplugin" +include ':app'