Skip to content

Commit ab7c186

Browse files
authored
refactor: Move apk parsers to dedicated module (#1950)
This PR is fixing the wrong design which mixes parsers with API adapters by moving parsers to the dedicated module.
1 parent 597d4ce commit ab7c186

17 files changed

Lines changed: 81 additions & 51 deletions

File tree

corellium/adapter/build.gradle.kts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,7 @@ tasks.withType<KotlinCompile> { kotlinOptions.jvmTarget = "1.8" }
1515
dependencies {
1616
implementation(project(":corellium:api"))
1717
implementation(project(":corellium:client"))
18-
1918
implementation(Dependencies.KOTLIN_COROUTINES_CORE)
20-
implementation(Dependencies.DEX_TEST_PARSER)
21-
implementation(Dependencies.APK_PARSER)
22-
2319
testImplementation(Dependencies.JUNIT)
2420
}
2521

26-
tasks.test {
27-
maxHeapSize = "3072m"
28-
minHeapSize = "512m"
29-
dependsOn(":resolveArtifacts")
30-
}

corellium/adapter/src/main/kotlin/flank/corellium/Api.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@ package flank.corellium
33
import flank.corellium.adapter.executeAndroidTestPlan
44
import flank.corellium.adapter.installAndroidApps
55
import flank.corellium.adapter.invokeAndroidDevices
6-
import flank.corellium.adapter.parseApkInfo
7-
import flank.corellium.adapter.parseApkPackageName
8-
import flank.corellium.adapter.parseApkTestCases
96
import flank.corellium.adapter.requestAuthorization
107
import flank.corellium.api.CorelliumApi
118

@@ -20,7 +17,4 @@ fun corelliumApi(
2017
projectName = projectName
2118
),
2219
executeTest = executeAndroidTestPlan,
23-
parseTestCases = parseApkTestCases,
24-
parseTestApkInfo = parseApkInfo,
25-
parsePackageName = parseApkPackageName
2620
)

corellium/api/src/main/kotlin/flank/corellium/api/CorelliumApi.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,4 @@ class CorelliumApi(
88
val invokeAndroidDevices: AndroidInstance.Invoke,
99
val installAndroidApps: AndroidApps.Install,
1010
val executeTest: AndroidTestPlan.Execute,
11-
val parseTestCases: Apk.ParseTestCases,
12-
val parsePackageName: Apk.ParsePackageName,
13-
val parseTestApkInfo: Apk.ParseInfo,
1411
)

corellium/apk/build.gradle.kts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2+
3+
plugins {
4+
kotlin(Plugins.Kotlin.PLUGIN_JVM)
5+
}
6+
7+
repositories {
8+
jcenter()
9+
mavenCentral()
10+
maven(url = "https://kotlin.bintray.com/kotlinx")
11+
}
12+
13+
tasks.withType<KotlinCompile> { kotlinOptions.jvmTarget = "1.8" }
14+
15+
dependencies {
16+
implementation(Dependencies.KOTLIN_COROUTINES_CORE)
17+
implementation(Dependencies.DEX_TEST_PARSER)
18+
implementation(Dependencies.APK_PARSER)
19+
20+
testImplementation(Dependencies.JUNIT)
21+
}
22+
23+
tasks.test {
24+
maxHeapSize = "3072m"
25+
minHeapSize = "512m"
26+
dependsOn(":resolveArtifacts")
27+
}

corellium/api/src/main/kotlin/flank/corellium/api/Apk.kt renamed to corellium/apk/src/main/kotlin/flank/apk/Apk.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
1-
package flank.corellium.api
1+
package flank.apk
2+
3+
import flank.apk.internal.parseApkInfo
4+
import flank.apk.internal.parseApkPackageName
5+
import flank.apk.internal.parseApkTestCases
26

37
/**
48
* Structured representation of the parsed test apk file.
59
*/
610
object Apk {
711

12+
class Api(
13+
val parseTestCases: ParseTestCases = parseApkTestCases,
14+
val parsePackageName: ParsePackageName = parseApkPackageName,
15+
val parseInfo: ParseInfo = parseApkInfo
16+
)
17+
818
data class Info(
919
val packageName: String,
1020
val testRunner: String,

corellium/adapter/src/main/kotlin/flank/corellium/adapter/ParseApk.kt renamed to corellium/apk/src/main/kotlin/flank/apk/internal/Parse.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
package flank.corellium.adapter
1+
package flank.apk.internal
22

33
import com.linkedin.dex.parser.DexParser
44
import com.linkedin.dex.parser.TestMethod
5-
import flank.corellium.api.Apk
5+
import flank.apk.Apk
66
import net.dongliu.apk.parser.ApkFile
77
import org.xml.sax.InputSource
88
import java.io.StringReader
99
import javax.xml.parsers.DocumentBuilderFactory
1010

11-
val parseApkTestCases = Apk.ParseTestCases { path ->
11+
internal val parseApkTestCases = Apk.ParseTestCases { path ->
1212
DexParser.findTestMethods(path)
1313
.map(TestMethod::testName)
1414
}
1515

16-
val parseApkPackageName = Apk.ParsePackageName { path ->
16+
internal val parseApkPackageName = Apk.ParsePackageName { path ->
1717
ApkFile(path).apkMeta.packageName
1818
}
1919

20-
val parseApkInfo = Apk.ParseInfo { path ->
20+
internal val parseApkInfo = Apk.ParseInfo { path ->
2121
Apk.Info(
2222
packageName = ApkFile(path).apkMeta.packageName,
2323
testRunner = DocumentBuilderFactory.newInstance()

corellium/adapter/src/test/kotlin/flank/corellium/adapter/ParseApkTest.kt renamed to corellium/apk/src/test/kotlin/flank/apk/ParseApkTest.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
package flank.corellium.adapter
1+
package flank.apk
22

3-
import flank.corellium.api.Apk
43
import org.junit.Assert.assertEquals
54
import org.junit.Test
65

76
private const val TEST_APK_PATH = "../../test_artifacts/master/apk/app-single-success-debug-androidTest.apk"
87

98
class ParseApkTest {
109

10+
private val apk = Apk.Api()
11+
1112
@Test
1213
fun parseTestCases() {
1314
assertEquals(
@@ -16,15 +17,15 @@ class ParseApkTest {
1617
"com.example.test_app.InstrumentedTest#ignoredTestWithSuppress",
1718
"com.example.test_app.InstrumentedTest#test",
1819
),
19-
parseApkTestCases(TEST_APK_PATH)
20+
apk.parseTestCases(TEST_APK_PATH)
2021
)
2122
}
2223

2324
@Test
2425
fun parsePackageName() {
2526
assertEquals(
2627
"com.example.test_app.test",
27-
parseApkPackageName(TEST_APK_PATH)
28+
apk.parsePackageName(TEST_APK_PATH)
2829
)
2930
}
3031

@@ -35,7 +36,7 @@ class ParseApkTest {
3536
packageName = "com.example.test_app.test",
3637
testRunner = "androidx.test.runner.AndroidJUnitRunner"
3738
),
38-
parseApkInfo(TEST_APK_PATH)
39+
apk.parseInfo(TEST_APK_PATH)
3940
)
4041
}
4142
}

corellium/cli/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ dependencies {
1818
implementation(project(":corellium:api"))
1919
implementation(project(":corellium:domain"))
2020
implementation(project(":corellium:adapter"))
21+
implementation(project(":corellium:apk"))
2122
implementation(Dependencies.JACKSON_KOTLIN)
2223
implementation(Dependencies.JACKSON_YAML)
2324
implementation(Dependencies.JACKSON_XML)

corellium/cli/src/main/kotlin/flank/corellium/cli/RunTestCorelliumAndroidCommand.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package flank.corellium.cli
33
import com.fasterxml.jackson.annotation.JsonIgnore
44
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
55
import com.fasterxml.jackson.annotation.JsonProperty
6+
import flank.apk.Apk
67
import flank.corellium.cli.RunTestCorelliumAndroidCommand.Config
78
import flank.corellium.cli.util.ConfigMap
89
import flank.corellium.cli.util.emptyConfigMap
@@ -104,6 +105,8 @@ class RunTestCorelliumAndroidCommand :
104105

105106
override val api by lazy { corelliumApi(config.project!!) }
106107

108+
override val apk = Apk.Api()
109+
107110
override val args by lazy { createArgs() }
108111

109112
override fun run() = invoke()

corellium/domain/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ tasks.withType<KotlinCompile> { kotlinOptions.jvmTarget = "1.8" }
1616
dependencies {
1717
implementation(Dependencies.KOTLIN_COROUTINES_CORE)
1818
implementation(project(":corellium:api"))
19+
implementation(project(":corellium:apk"))
1920
implementation(project(":corellium:shard:calculate"))
2021
implementation(project(":corellium:shard:obfuscate"))
2122
implementation(project(":corellium:shard:dump"))

0 commit comments

Comments
 (0)