Skip to content

Commit 5528372

Browse files
committed
fix(transform-kit): debugWriteJar时忽略META-INF/目录文件
同时采用output时相同的entryName。 fix #641
1 parent cc8f6d0 commit 5528372

File tree

3 files changed

+11
-12
lines changed

3 files changed

+11
-12
lines changed

projects/sdk/core/transform-kit/src/main/kotlin/com/tencent/shadow/core/transform_kit/AbstractTransform.kt

+7-8
Original file line numberDiff line numberDiff line change
@@ -76,20 +76,19 @@ abstract class AbstractTransform(
7676
onCheckTransformedClasses(debugClassPool, inputClassNames)
7777
}
7878

79-
override fun onOutputClass(className: String, outputStream: OutputStream) {
80-
classPool[className].debugWriteJar(mDebugClassJarZOS)
81-
super.onOutputClass(className, outputStream)
79+
override fun onOutputClass(entryName: String?, className: String, outputStream: OutputStream) {
80+
classPool[className].debugWriteJar(entryName, mDebugClassJarZOS)
81+
super.onOutputClass(entryName, className, outputStream)
8282
}
8383

84-
private fun CtClass.debugWriteJar(outputStream: ZipOutputStream) {
85-
//忽略Kotlin 1.4引入的module-info
86-
//https://kotlinlang.org/docs/reference/whatsnew14.html#module-info-descriptors-for-stdlib-artifacts
87-
if (name == "module-info") {
84+
private fun CtClass.debugWriteJar(outputEntryName: String?, outputStream: ZipOutputStream) {
85+
//忽略META-INF
86+
if (outputEntryName?.startsWith("META-INF/") == true) {
8887
return
8988
}
9089

9190
try {
92-
val entryName = (name.replace('.', '/') + ".class")
91+
val entryName = outputEntryName ?: (name.replace('.', '/') + ".class")
9392
outputStream.putNextEntry(ZipEntry(entryName))
9493
val p = stopPruning(true)
9594
toBytecode(DataOutputStream(outputStream))

projects/sdk/core/transform-kit/src/main/kotlin/com/tencent/shadow/core/transform_kit/ClassTransform.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ abstract class ClassTransform(val project: Project) : Transform() {
114114
val file = it.second
115115
Files.createParentDirs(file)
116116
FileOutputStream(file).use {
117-
onOutputClass(className, it)
117+
onOutputClass(null, className, it)
118118
}
119119
}
120120
}
@@ -129,7 +129,7 @@ abstract class ClassTransform(val project: Project) : Transform() {
129129
val className = it.first
130130
val entryName = it.second
131131
zos.putNextEntry(ZipEntry(entryName))
132-
onOutputClass(className, zos)
132+
onOutputClass(entryName, className, zos)
133133
}
134134
}
135135
}
@@ -138,7 +138,7 @@ abstract class ClassTransform(val project: Project) : Transform() {
138138
}
139139
}
140140

141-
abstract fun onOutputClass(className: String, outputStream: OutputStream)
141+
abstract fun onOutputClass(entryName: String?, className: String, outputStream: OutputStream)
142142

143143
abstract fun DirInputClass.onInputClass(classFile: File, outputFile: File)
144144

projects/sdk/core/transform-kit/src/main/kotlin/com/tencent/shadow/core/transform_kit/JavassistTransform.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ open class JavassistTransform(project: Project, val classPoolBuilder: ClassPoolB
3030
val mCtClassInputMap = mutableMapOf<CtClass, InputClass>()
3131
lateinit var classPool: ClassPool
3232

33-
override fun onOutputClass(className: String, outputStream: OutputStream) {
33+
override fun onOutputClass(entryName: String?, className: String, outputStream: OutputStream) {
3434
classPool[className].writeOut(outputStream)
3535
}
3636

0 commit comments

Comments
 (0)