Skip to content

Commit

Permalink
Fix issue #311
Browse files Browse the repository at this point in the history
  • Loading branch information
johnsonlee committed Apr 29, 2022
1 parent 14f189e commit 756b933
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import com.didiglobal.booster.kotlinx.NCPU
import com.didiglobal.booster.kotlinx.file
import com.didiglobal.booster.kotlinx.green
import com.didiglobal.booster.kotlinx.red
import com.didiglobal.booster.kotlinx.touch
import com.didiglobal.booster.transform.AbstractKlassPool
import com.didiglobal.booster.transform.ArtifactManager
import com.didiglobal.booster.transform.Collector
Expand Down Expand Up @@ -225,11 +226,11 @@ internal class BoosterTransformInvocation(
}

private fun doVerify() {
outputs.sortedBy(File::nameWithoutExtension).forEach { output ->
val out = temporaryDir.file(output.name)
val rc = out.dex(output, variant.extension.defaultConfig.targetSdkVersion?.apiLevel ?: DexFormat.API_NO_EXTENDED_OPCODES)
println("${if (rc != 0) red("") else green("")} $output")
out.deleteRecursively()
outputs.sortedBy(File::nameWithoutExtension).forEach { input ->
val output = temporaryDir.file(input.name)
val rc = input.dex(output, variant.extension.defaultConfig.targetSdkVersion?.apiLevel ?: DexFormat.API_NO_EXTENDED_OPCODES)
println("${if (rc != 0) red("") else green("")} $input")
output.deleteRecursively()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,46 @@ package com.didiglobal.booster.gradle.util

import com.android.dex.DexFormat
import com.android.dx.command.dexer.Main
import com.android.tools.r8.D8
import com.didiglobal.booster.gradle.GTE_V7_X
import com.didiglobal.booster.kotlinx.NCPU
import com.didiglobal.booster.kotlinx.search
import com.didiglobal.booster.kotlinx.touch
import java.io.File

internal fun File.dex(output: File, api: Int = DexFormat.API_NO_EXTENDED_OPCODES): Int {
return if (GTE_V7_X) {
runD8(this, output, api)
} else {
runDx(this, output, api)
}
}

private fun runD8(input: File, output: File, api: Int): Int {
val inputs = when {
input.isDirectory -> {
output.mkdirs()
input.search {
it.extension.equals("class", true)
}
}
else -> {
output.touch()
listOf(input)
}
}

val args = inputs.map { it.canonicalPath } + "--min-api" + api.toString()
return try {
D8.main(args.toTypedArray())
0
} catch (t: Throwable) {
t.printStackTrace()
-1
}
}

private fun runDx(input: File, output: File, api: Int): Int {
val args = Main.Arguments().apply {
numThreads = NCPU
debug = true
Expand All @@ -15,8 +51,8 @@ internal fun File.dex(output: File, api: Int = DexFormat.API_NO_EXTENDED_OPCODES
jarOutput = true
optimize = false
minSdkVersion = api
fileNames = arrayOf(output.canonicalPath)
outName = canonicalPath
fileNames = arrayOf(input.canonicalPath)
outName = output.canonicalPath
}
return try {
Main.run(args)
Expand Down

0 comments on commit 756b933

Please sign in to comment.