From e702e762246d65a029ede38473bb49d91fb4529e Mon Sep 17 00:00:00 2001 From: xiaojiniz <347837667@qq.com> Date: Wed, 31 Jan 2024 10:49:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20java=20=E5=90=84=E7=A7=8D?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=88=B0=2017,=20=E5=B9=B6=E4=B8=94=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=20asm=20=E7=94=9F=E6=88=90=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 1 - .../component/plugin/ASMUtilClassUtil.kt | 419 ++++++++++++++++++ .../component/plugin/ComponentPlugin.kt | 29 +- Demo/app/build.gradle | 2 +- Demo/app/src/main/AndroidManifest.xml | 7 + .../java/com/xiaojinzi/componentdemo/App.java | 4 +- .../1.9.4/component-plugin-1.9.4.jar | Bin 42471 -> 48286 bytes .../1.9.4/component-plugin-1.9.4.jar.md5 | 2 +- .../1.9.4/component-plugin-1.9.4.jar.sha1 | 2 +- .../1.9.4/component-plugin-1.9.4.jar.sha256 | 2 +- .../1.9.4/component-plugin-1.9.4.jar.sha512 | 2 +- .../1.9.4/component-plugin-1.9.4.module | 20 +- .../1.9.4/component-plugin-1.9.4.module.md5 | 2 +- .../1.9.4/component-plugin-1.9.4.module.sha1 | 2 +- .../component-plugin-1.9.4.module.sha256 | 2 +- .../component-plugin-1.9.4.module.sha512 | 2 +- .../component-plugin/maven-metadata.xml | 2 +- .../component-plugin/maven-metadata.xml.md5 | 2 +- .../component-plugin/maven-metadata.xml.sha1 | 2 +- .../maven-metadata.xml.sha256 | 2 +- .../maven-metadata.xml.sha512 | 2 +- 21 files changed, 463 insertions(+), 45 deletions(-) create mode 100644 ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ASMUtilClassUtil.kt diff --git a/.idea/misc.xml b/.idea/misc.xml index d927bb22..e9096284 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - diff --git a/ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ASMUtilClassUtil.kt b/ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ASMUtilClassUtil.kt new file mode 100644 index 00000000..78b4336e --- /dev/null +++ b/ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ASMUtilClassUtil.kt @@ -0,0 +1,419 @@ +package com.xiaojinzi.component.plugin + +import javassist.ClassPool +import javassist.CtClass +import javassist.CtConstructor +import javassist.CtMethod +import javassist.Modifier + +object ASMUtilClassUtil { + + fun getClassBytes( + moduleNameMap: Map, + interceptorMap: Map, + routerMap: Map, + routerDegradeMap: Map, + serviceMap: Map, + fragmentMap: Map, + ): ByteArray { + + val classPool = ClassPool.getDefault() + val listClass = classPool.get("java.util.List") + val asmUtilClassPath = "com.xiaojinzi.component.support.ASMUtil" + val asmUtilClass = classPool.getOrNull(asmUtilClassPath) + ?: classPool.makeClass(asmUtilClassPath) + + if (asmUtilClass.isFrozen) { + println("${ComponentPlugin.TAG}, asmUtilClass is frozen, will call defrost() method") + asmUtilClass.defrost() + // return asmUtilClass.toBytecode() + } + + getModuleNamesMethod(listClass, asmUtilClass, moduleNameMap) + + findModuleApplicationAsmImplMethod(classPool, asmUtilClass, moduleNameMap) + + findModuleInterceptorAsmImplMethod(classPool, asmUtilClass, interceptorMap) + + findModuleRouterAsmImplMethod(classPool, asmUtilClass, routerMap) + + findModuleRouterDegradeAsmImplMethod(classPool, asmUtilClass, routerDegradeMap) + + findModuleServiceAsmImplMethod(classPool, asmUtilClass, serviceMap) + + findModuleFragmentAsmImplMethod(classPool, asmUtilClass, fragmentMap) + + return asmUtilClass.toBytecode() + } + + private fun findModuleFragmentAsmImplMethod( + classPool: ClassPool, + asmUtilClass: CtClass, + serviceMap: Map + ) { + // ========================= findModuleFragmentAsmImpl ========================= start + + val interfaceIInterceptorLifecycle = + classPool.makeInterface("com.xiaojinzi.component.fragment.IComponentHostFragment") + val ctMethod = CtMethod( + interfaceIInterceptorLifecycle, + "findModuleFragmentAsmImpl", + arrayOf(classPool.get("java.lang.String")), + asmUtilClass, + ) + ctMethod.modifiers = + Modifier.PUBLIC or Modifier.STATIC + val methodBodySb = StringBuilder() + methodBodySb.append("{") + if (serviceMap.isEmpty()) { + methodBodySb.append("return null;") + } else { + serviceMap.entries.forEachIndexed { index, entry -> + val targetClassFullName = entry.value.removeSuffix( + suffix = ".class" + ) + classPool.makeClass(targetClassFullName).apply { + this.addConstructor( + CtConstructor( + arrayOf(), + this + ).apply { + modifiers = Modifier.PUBLIC + } + ) + } + if (index != 0) { + methodBodySb.append(" else ") + } + methodBodySb.append("if (\"${entry.key}\".equalsIgnoreCase($1)) {") + methodBodySb.append( + "return new ${targetClassFullName}();" + ) + methodBodySb.append("}") + } + methodBodySb.append(" else {return null;}") + } + methodBodySb.append("}") + ctMethod.setBody( + methodBodySb.toString(), + ) + asmUtilClass.getDeclaredMethods("findModuleFragmentAsmImpl").forEach { + asmUtilClass.removeMethod(it) + } + asmUtilClass.addMethod(ctMethod) + } + + private fun findModuleServiceAsmImplMethod( + classPool: ClassPool, + asmUtilClass: CtClass, + serviceMap: Map + ) { + // ========================= findModuleServiceAsmImpl ========================= start + + val interfaceIInterceptorLifecycle = + classPool.makeInterface("com.xiaojinzi.component.service.IComponentHostService") + val ctMethod = CtMethod( + interfaceIInterceptorLifecycle, + "findModuleServiceAsmImpl", + arrayOf(classPool.get("java.lang.String")), + asmUtilClass, + ) + ctMethod.modifiers = + Modifier.PUBLIC or Modifier.STATIC + val methodBodySb = StringBuilder() + methodBodySb.append("{") + if (serviceMap.isEmpty()) { + methodBodySb.append("return null;") + } else { + serviceMap.entries.forEachIndexed { index, entry -> + val targetClassFullName = entry.value.removeSuffix( + suffix = ".class" + ) + classPool.makeClass(targetClassFullName).apply { + this.addConstructor( + CtConstructor( + arrayOf(), + this + ).apply { + modifiers = Modifier.PUBLIC + } + ) + } + if (index != 0) { + methodBodySb.append(" else ") + } + methodBodySb.append("if (\"${entry.key}\".equalsIgnoreCase($1)) {") + methodBodySb.append( + "return new ${targetClassFullName}();" + ) + methodBodySb.append("}") + } + methodBodySb.append(" else {return null;}") + } + methodBodySb.append("}") + ctMethod.setBody( + methodBodySb.toString(), + ) + asmUtilClass.getDeclaredMethods("findModuleServiceAsmImpl").forEach { + asmUtilClass.removeMethod(it) + } + asmUtilClass.addMethod(ctMethod) + } + + private fun findModuleRouterDegradeAsmImplMethod( + classPool: ClassPool, + asmUtilClass: CtClass, + routerDegradeMap: Map + ) { + // ========================= findModuleRouterDegradeAsmImpl ========================= start + + val interfaceIInterceptorLifecycle = + classPool.makeInterface("com.xiaojinzi.component.router.IComponentHostRouterDegrade") + val ctMethod = CtMethod( + interfaceIInterceptorLifecycle, + "findModuleRouterDegradeAsmImpl", + arrayOf(classPool.get("java.lang.String")), + asmUtilClass, + ) + ctMethod.modifiers = + Modifier.PUBLIC or Modifier.STATIC + val methodBodySb = StringBuilder() + methodBodySb.append("{") + if (routerDegradeMap.isEmpty()) { + methodBodySb.append("return null;") + } else { + routerDegradeMap.entries.forEachIndexed { index, entry -> + val targetClassFullName = entry.value.removeSuffix( + suffix = ".class" + ) + classPool.makeClass(targetClassFullName).apply { + this.addConstructor( + CtConstructor( + arrayOf(), + this + ).apply { + modifiers = Modifier.PUBLIC + } + ) + } + if (index != 0) { + methodBodySb.append(" else ") + } + methodBodySb.append("if (\"${entry.key}\".equalsIgnoreCase($1)) {") + methodBodySb.append( + "return new ${targetClassFullName}();" + ) + methodBodySb.append("}") + } + methodBodySb.append(" else {return null;}") + } + methodBodySb.append("}") + ctMethod.setBody( + methodBodySb.toString(), + ) + asmUtilClass.getDeclaredMethods("findModuleRouterDegradeAsmImpl").forEach { + asmUtilClass.removeMethod(it) + } + asmUtilClass.addMethod(ctMethod) + } + + private fun findModuleRouterAsmImplMethod( + classPool: ClassPool, + asmUtilClass: CtClass, + routerMap: Map + ) { + // ========================= findModuleInterceptorAsmImpl ========================= start + + val interfaceIInterceptorLifecycle = + classPool.makeInterface("com.xiaojinzi.component.router.IComponentHostRouter") + val ctMethod = CtMethod( + interfaceIInterceptorLifecycle, + "findModuleRouterAsmImpl", + arrayOf(classPool.get("java.lang.String")), + asmUtilClass, + ) + ctMethod.modifiers = + Modifier.PUBLIC or Modifier.STATIC + val methodBodySb = StringBuilder() + methodBodySb.append("{") + if (routerMap.isEmpty()) { + methodBodySb.append("return null;") + } else { + routerMap.entries.forEachIndexed { index, entry -> + val targetClassFullName = entry.value.removeSuffix( + suffix = ".class" + ) + classPool.makeClass(targetClassFullName).apply { + this.addConstructor( + CtConstructor( + arrayOf(), + this + ).apply { + modifiers = Modifier.PUBLIC + } + ) + } + if (index != 0) { + methodBodySb.append(" else ") + } + methodBodySb.append("if (\"${entry.key}\".equalsIgnoreCase($1)) {") + methodBodySb.append( + "return new ${targetClassFullName}();" + ) + methodBodySb.append("}") + } + methodBodySb.append(" else {return null;}") + } + methodBodySb.append("}") + ctMethod.setBody( + methodBodySb.toString(), + ) + asmUtilClass.getDeclaredMethods("findModuleRouterAsmImpl").forEach { + asmUtilClass.removeMethod(it) + } + asmUtilClass.addMethod(ctMethod) + } + + private fun findModuleInterceptorAsmImplMethod( + classPool: ClassPool, + asmUtilClass: CtClass, + interceptorMap: Map + ) { + // ========================= findModuleInterceptorAsmImpl ========================= start + + val interfaceIInterceptorLifecycle = + classPool.makeInterface("com.xiaojinzi.component.interceptor.IComponentHostInterceptor") + val ctMethod = CtMethod( + interfaceIInterceptorLifecycle, + "findModuleInterceptorAsmImpl", + arrayOf(classPool.get("java.lang.String")), + asmUtilClass, + ) + ctMethod.modifiers = + Modifier.PUBLIC or Modifier.STATIC + val methodBodySb = StringBuilder() + methodBodySb.append("{") + if (interceptorMap.isEmpty()) { + methodBodySb.append("return null;") + } else { + interceptorMap.entries.forEachIndexed { index, entry -> + val targetClassFullName = entry.value.removeSuffix( + suffix = ".class" + ) + classPool.makeClass(targetClassFullName).apply { + this.addConstructor( + CtConstructor( + arrayOf(), + this + ).apply { + modifiers = Modifier.PUBLIC + } + ) + } + if (index != 0) { + methodBodySb.append(" else ") + } + methodBodySb.append("if (\"${entry.key}\".equalsIgnoreCase($1)) {") + methodBodySb.append( + "return new ${targetClassFullName}();" + ) + methodBodySb.append("}") + } + methodBodySb.append(" else {return null;}") + } + methodBodySb.append("}") + ctMethod.setBody( + methodBodySb.toString(), + ) + asmUtilClass.getDeclaredMethods("findModuleInterceptorAsmImpl").forEach { + asmUtilClass.removeMethod(it) + } + asmUtilClass.addMethod(ctMethod) + } + + private fun findModuleApplicationAsmImplMethod( + classPool: ClassPool, + asmUtilClass: CtClass, + moduleNameMap: Map + ) { + // ========================= findModuleApplicationAsmImpl ========================= start + + val interfaceIModuleLifecycle = + classPool.makeInterface("com.xiaojinzi.component.application.IComponentHostApplication") + val ctMethod = CtMethod( + interfaceIModuleLifecycle, + "findModuleApplicationAsmImpl", + arrayOf(classPool.get("java.lang.String")), + asmUtilClass, + ) + ctMethod.modifiers = + Modifier.PUBLIC or Modifier.STATIC + val methodBodySb = StringBuilder() + methodBodySb.append("{") + if (moduleNameMap.isEmpty()) { + methodBodySb.append("return null;") + } else { + moduleNameMap.entries.forEachIndexed { index, entry -> + val targetClassFullName = entry.value.removeSuffix( + suffix = ".class" + ) + classPool.makeClass(targetClassFullName).apply { + this.addConstructor( + CtConstructor( + arrayOf(), + this + ).apply { + modifiers = Modifier.PUBLIC + } + ) + } + if (index != 0) { + methodBodySb.append(" else ") + } + methodBodySb.append("if (\"${entry.key}\".equalsIgnoreCase($1)) {") + methodBodySb.append( + "return new ${targetClassFullName}();" + ) + methodBodySb.append("}") + } + methodBodySb.append(" else {return null;}") + } + methodBodySb.append("}") + ctMethod.setBody( + methodBodySb.toString(), + ) + asmUtilClass.getDeclaredMethods("findModuleApplicationAsmImpl").forEach { + asmUtilClass.removeMethod(it) + } + asmUtilClass.addMethod(ctMethod) + } + + private fun getModuleNamesMethod( + listClass: CtClass?, + asmUtilClass: CtClass, + moduleNameMap: Map + ) { + // ========================= getModuleNames ========================= start + + val ctMethod = CtMethod(listClass, "getModuleNames", emptyArray(), asmUtilClass) + ctMethod.modifiers = Modifier.PUBLIC or Modifier.STATIC + ctMethod.genericSignature = "(Ljava/util/List;)V" + + val methodBodySb = StringBuilder() + methodBodySb.append("{") + methodBodySb.append("java.util.List list = new java.util.ArrayList();") + moduleNameMap.keys.forEach { + methodBodySb.append("list.add(\"$it\");") + } + methodBodySb.append("return list;") + methodBodySb.append("}") + ctMethod.setBody( + methodBodySb.toString() + ) + asmUtilClass.getDeclaredMethods("getModuleNames").forEach { + asmUtilClass.removeMethod(it) + } + asmUtilClass.addMethod(ctMethod) + } + +} \ No newline at end of file diff --git a/ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ComponentPlugin.kt b/ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ComponentPlugin.kt index aa59682c..50f6e214 100644 --- a/ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ComponentPlugin.kt +++ b/ComponentPlugin/src/main/java/com/xiaojinzi/component/plugin/ComponentPlugin.kt @@ -264,23 +264,16 @@ class ComponentPlugin : Plugin { val jarFile = JarFile(file.asFile) jarFile.entries().iterator().forEach { jarEntry -> if ("com/xiaojinzi/component/support/ASMUtil.class" == jarEntry.name) { - println("${ComponentPlugin.TAG}, 找到目标 ASMUtil.class 111") - val asmUtilClassBytes = try { - // 这里有问题 - ASMUtilClassGen.getBytes( - moduleNameMap, - interceptorMap, - routerMap, - routerDegradeMap, - serviceMap, - fragmentMap, - ) - } catch (e: Exception) { - e.printStackTrace(System.out) - throw e - } - println("${ComponentPlugin.TAG}, 找到目标 ASMUtil.class 222") - runCatching { + println("${ComponentPlugin.TAG}, 找到目标 ASMUtil.class") + val asmUtilClassBytes = ASMUtilClassUtil.getClassBytes( + moduleNameMap = moduleNameMap, + interceptorMap = interceptorMap, + routerMap = routerMap, + routerDegradeMap = routerDegradeMap, + serviceMap = serviceMap, + fragmentMap = fragmentMap, + ) + /*runCatching { File("./Temp/ASMUtil.class") .outputStream() .use { outputStream -> @@ -288,7 +281,7 @@ class ComponentPlugin : Plugin { asmUtilClassBytes ) } - } + }*/ jarOutput.putNextEntry(JarEntry(jarEntry.name)) jarOutput.write(asmUtilClassBytes) jarOutput.closeEntry() diff --git a/Demo/app/build.gradle b/Demo/app/build.gradle index 11781cda..20d83a72 100644 --- a/Demo/app/build.gradle +++ b/Demo/app/build.gradle @@ -1,5 +1,5 @@ apply plugin: 'com.android.application' -// apply plugin: 'com.xiaojinzi.component.plugin' +apply plugin: 'com.xiaojinzi.component.plugin' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' diff --git a/Demo/app/src/main/AndroidManifest.xml b/Demo/app/src/main/AndroidManifest.xml index 5f4cb845..f39debbe 100644 --- a/Demo/app/src/main/AndroidManifest.xml +++ b/Demo/app/src/main/AndroidManifest.xml @@ -1,6 +1,13 @@ + + + diff --git a/Demo/app/src/main/java/com/xiaojinzi/componentdemo/App.java b/Demo/app/src/main/java/com/xiaojinzi/componentdemo/App.java index 2de22de8..64ead1e8 100644 --- a/Demo/app/src/main/java/com/xiaojinzi/componentdemo/App.java +++ b/Demo/app/src/main/java/com/xiaojinzi/componentdemo/App.java @@ -34,9 +34,9 @@ public void onCreate() { // 通知模块变化的延迟时间间隔 .notifyModuleChangedDelayTime(0) // 开启启动优化, 必须配套使用 Gradle 插件 - .optimizeInit(false) + .optimizeInit(true) // 自动加载所有模块, 依赖上面的 optimizeInit(true) - .autoRegisterModule(false) + .autoRegisterModule(true) // demo 测试, 线上并没有, 请勿配置 // .objectToJsonConverter(obj -> new Gson().toJson(obj)) // 执行构建 diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar index 1f6d257dd408a8c4a55d167ff1ff19c7f98dd34c..31a46477fb097ef9730700608f6f82bbd1fd899d 100644 GIT binary patch delta 31689 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 diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.md5 b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.md5 index 1e5521ba..9fbb0cc7 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.md5 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.md5 @@ -1 +1 @@ -9d1892b2cfd77e41b4489b3fd40f2d63 \ No newline at end of file +470b3c05e3f9a17f366fb6236313c42c \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.sha1 b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.sha1 index 3a63e3f6..4823e7b8 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.sha1 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.sha1 @@ -1 +1 @@ -ce14ed34155fa3adbbd38fd0c046b74ed6eaea04 \ No newline at end of file +feedbfc8861e983f72aa3b9bf34628869730e85a \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.sha256 b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.sha256 index e0743f3a..ddb93dfe 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.sha256 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.sha256 @@ -1 +1 @@ -f25730ba3f49a5a5d0b7f71de94f460371002b3c57abc444d7314035881dd48e \ No newline at end of file +b0600d0e59ae71036cfb96d00a4ac8eec82906cdb7c1bea29e74071178239f11 \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.sha512 b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.sha512 index b9170679..8ae867ae 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.sha512 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.jar.sha512 @@ -1 +1 @@ -383774abd14ff5745eceec56210ffdecfa6d0e005f857abb1868c783fb81508d7fbd633192c3f20f1e9f2619319e233cf33d11c30fa601b3779fb28b64c68c46 \ No newline at end of file +ed13303c1581e55d74397ffa7449b811716a9a56e5b167aec42b41748435123aa1b4fff1a12de549ef7fda50ae44cd4d59609d3da4eec1295741cf5bbfa1a552 \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module index 3c494716..8d39a241 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module @@ -29,11 +29,11 @@ { "name": "component-plugin-1.9.4.jar", "url": "component-plugin-1.9.4.jar", - "size": 42471, - "sha512": "383774abd14ff5745eceec56210ffdecfa6d0e005f857abb1868c783fb81508d7fbd633192c3f20f1e9f2619319e233cf33d11c30fa601b3779fb28b64c68c46", - "sha256": "f25730ba3f49a5a5d0b7f71de94f460371002b3c57abc444d7314035881dd48e", - "sha1": "ce14ed34155fa3adbbd38fd0c046b74ed6eaea04", - "md5": "9d1892b2cfd77e41b4489b3fd40f2d63" + "size": 48286, + "sha512": "ed13303c1581e55d74397ffa7449b811716a9a56e5b167aec42b41748435123aa1b4fff1a12de549ef7fda50ae44cd4d59609d3da4eec1295741cf5bbfa1a552", + "sha256": "b0600d0e59ae71036cfb96d00a4ac8eec82906cdb7c1bea29e74071178239f11", + "sha1": "feedbfc8861e983f72aa3b9bf34628869730e85a", + "md5": "470b3c05e3f9a17f366fb6236313c42c" } ] }, @@ -96,11 +96,11 @@ { "name": "component-plugin-1.9.4.jar", "url": "component-plugin-1.9.4.jar", - "size": 42471, - "sha512": "383774abd14ff5745eceec56210ffdecfa6d0e005f857abb1868c783fb81508d7fbd633192c3f20f1e9f2619319e233cf33d11c30fa601b3779fb28b64c68c46", - "sha256": "f25730ba3f49a5a5d0b7f71de94f460371002b3c57abc444d7314035881dd48e", - "sha1": "ce14ed34155fa3adbbd38fd0c046b74ed6eaea04", - "md5": "9d1892b2cfd77e41b4489b3fd40f2d63" + "size": 48286, + "sha512": "ed13303c1581e55d74397ffa7449b811716a9a56e5b167aec42b41748435123aa1b4fff1a12de549ef7fda50ae44cd4d59609d3da4eec1295741cf5bbfa1a552", + "sha256": "b0600d0e59ae71036cfb96d00a4ac8eec82906cdb7c1bea29e74071178239f11", + "sha1": "feedbfc8861e983f72aa3b9bf34628869730e85a", + "md5": "470b3c05e3f9a17f366fb6236313c42c" } ] } diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.md5 b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.md5 index dae89517..4de93eeb 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.md5 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.md5 @@ -1 +1 @@ -dde8c54e1fc816333cb95cbf648de9f6 \ No newline at end of file +4041b55b6dd6e72d8b08a49c0f97f017 \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.sha1 b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.sha1 index 297d73bc..e8e7b07e 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.sha1 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.sha1 @@ -1 +1 @@ -db041dfd141a933b650ad891205eab9bc1beea32 \ No newline at end of file +1313f4af2a61d8d8257105c4da93e9112387d1cb \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.sha256 b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.sha256 index 3be6994d..bdcd158e 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.sha256 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.sha256 @@ -1 +1 @@ -630a26928ee0f13146738347410ca33205a4e92498f12419a805627d95db370d \ No newline at end of file +ade46faa744ef1ec61ea8643dcf2dde4582e6a28f7c35b134fa8a060621224b9 \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.sha512 b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.sha512 index aee43a4e..1890e36e 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.sha512 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/1.9.4/component-plugin-1.9.4.module.sha512 @@ -1 +1 @@ -8d27892658f8ed51f513edc202e2549ebab71ac524dafce6cede624f84ae58e1f80a8b74bd4e2af38210c7cce4f78a02b744cff750a3e320f93c22906786b10c \ No newline at end of file +814d52f1b7e6576c114b2c8102ea5d939044fccffc68160d1d519c737e251ae77d14b9a790786a9b63da7effac542aad9af29fc0dbddb534438a400872ddd2c2 \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml index 8aaf9edc..1ad17247 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml @@ -43,6 +43,6 @@ 1.9.4 1.9.5 - 20240130132802 + 20240131024046 diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.md5 b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.md5 index 92af29e4..8df18908 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.md5 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.md5 @@ -1 +1 @@ -158ed48d520b4c3132b72cf8f03392bb \ No newline at end of file +eb3f4d9590980eca208bcdd408ac03fb \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha1 b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha1 index 5a1e68ef..17c4531e 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha1 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha1 @@ -1 +1 @@ -ddd56478827e1f608323f5cd4d3ca4a5ba971ba5 \ No newline at end of file +4d20fdc29c52c7406c6ab1508584da9c25c9a56c \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha256 b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha256 index 9edeaf9e..0f9a840f 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha256 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha256 @@ -1 +1 @@ -90a0213e91662d5ff6d24539e4fe905d7ef339705d0fce896ee86e3d8a2ae2f7 \ No newline at end of file +400c6034dace522cf77e771481bcc5552429f0547aeb260c90b3879f6e005b1d \ No newline at end of file diff --git a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha512 b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha512 index dc9f699a..13f36808 100644 --- a/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha512 +++ b/RepoComponent/com/xiaojinzi/component/component-plugin/maven-metadata.xml.sha512 @@ -1 +1 @@ -1f706cd29a58322768f99b020ec2a4d09a6bf95d62abf14b6fab85e2afa7feb9d3a62d478421edd491167878f5ba8845d9d6753bc46d10e77f1007fd9710ab15 \ No newline at end of file +a984c06bedacf046614c946de490fc5ab5f373d5998d314f8d2ba116b0b46d0ae9862581e19f485591382a565da886dfda0d3e5ed1d9232602430e766a7419bf \ No newline at end of file