Skip to content

Commit 865eb51

Browse files
committed
Remove obsolete native libraries and enhance obfuscation functionality: delete libsignKey.dll and libsignKey.dylib, and refactor ObfuscateStringsUseCase and ObfuscateAssetsTask to utilize new use case classes for improved resource management. Update file handling in AParser.kt, XParser.kt, and related tasks to support project context and streamline file operations.
1 parent 80a9f57 commit 865eb51

File tree

14 files changed

+143
-26
lines changed

14 files changed

+143
-26
lines changed
-3.65 MB
Binary file not shown.
-175 KB
Binary file not shown.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package dev.vyp.stringcare.plugin.domain.usecases
2+
3+
import dev.vyp.stringcare.plugin.StringCareConfiguration
4+
import dev.vyp.stringcare.plugin.domain.models.forEachWithBackup
5+
import dev.vyp.stringcare.plugin.internal.locateAssetsFiles
6+
import dev.vyp.stringcare.plugin.internal.obfuscateFile
7+
import org.gradle.api.Project
8+
9+
/** Backs up and obfuscates configured asset files. */
10+
class ObfuscateAssetsUseCase {
11+
fun obfuscate(
12+
projectPath: String,
13+
configuration: StringCareConfiguration,
14+
tempRoot: String,
15+
key: String,
16+
project: Project? = null,
17+
): Int {
18+
val files = locateAssetsFiles(projectPath, configuration, project)
19+
forEachWithBackup(files, tempRoot) { asset ->
20+
obfuscateFile(key, asset.file, configuration.applicationId)
21+
}
22+
return files.size
23+
}
24+
}

plugin/src/main/kotlin/dev/vyp/stringcare/plugin/domain/usecases/ObfuscateStringsUseCase.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ package dev.vyp.stringcare.plugin.domain.usecases
22

33
import dev.vyp.stringcare.plugin.StringCareConfiguration
44
import dev.vyp.stringcare.plugin.domain.models.ResourceFile
5+
import dev.vyp.stringcare.plugin.domain.models.forEachWithBackup
56
import dev.vyp.stringcare.plugin.domain.repositories.ResourceRepository
7+
import dev.vyp.stringcare.plugin.internal.locateResourceFiles
8+
import dev.vyp.stringcare.plugin.internal.modifyXML
9+
import org.gradle.api.Project
610

711
/** Locates string resource files that the plugin may obfuscate. */
812
class ObfuscateStringsUseCase(
@@ -12,4 +16,18 @@ class ObfuscateStringsUseCase(
1216
projectPath: String,
1317
configuration: StringCareConfiguration,
1418
): List<ResourceFile> = resources.locateResourceFiles(projectPath, configuration)
19+
20+
fun obfuscate(
21+
projectPath: String,
22+
configuration: StringCareConfiguration,
23+
tempRoot: String,
24+
key: String,
25+
project: Project? = null,
26+
): Int {
27+
val files = locateResourceFiles(projectPath, configuration, project)
28+
forEachWithBackup(files, tempRoot) { resource ->
29+
modifyXML(resource.file, key, configuration)
30+
}
31+
return files.size
32+
}
1533
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package dev.vyp.stringcare.plugin.domain.usecases
2+
3+
import dev.vyp.stringcare.plugin.internal.restoreAssetsFiles
4+
import dev.vyp.stringcare.plugin.internal.restoreResourceFiles
5+
import java.io.File
6+
7+
/** Restores StringCare backups for resources/assets into the source tree. */
8+
class RestoreFilesUseCase {
9+
fun restoreResources(
10+
projectPath: String,
11+
module: String,
12+
tempRoot: String,
13+
): List<File> = restoreResourceFiles(projectPath, module, tempRoot)
14+
15+
fun restoreAssets(
16+
projectPath: String,
17+
module: String,
18+
tempRoot: String,
19+
): List<File> = restoreAssetsFiles(projectPath, module, tempRoot)
20+
}

plugin/src/main/kotlin/dev/vyp/stringcare/plugin/internal/AParser.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,20 @@ package dev.vyp.stringcare.plugin.internal
33
import dev.vyp.stringcare.plugin.StringCareConfiguration
44
import dev.vyp.stringcare.plugin.StringCarePlugin
55
import dev.vyp.stringcare.plugin.domain.models.AssetsFile
6+
import org.gradle.api.Project
67
import java.io.File
78

89
fun locateAssetsFiles(
910
projectPath: String,
1011
configuration: StringCareConfiguration,
12+
project: Project? = null,
1113
): List<AssetsFile> =
1214
locateConfiguredFiles(
1315
projectPath = projectPath,
1416
configuration = configuration,
1517
debugHeader = "== ASSETS FILES FOUND ======================================",
18+
project = project,
19+
includeNames = configuration.normalize().assetsFiles,
1620
isValid = { file, normalized -> file.validForAssetsConfiguration(normalized) },
1721
mapFile = { file, normalized -> file.assetsFile(normalized) },
1822
)

plugin/src/main/kotlin/dev/vyp/stringcare/plugin/internal/ParserFileOps.kt

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package dev.vyp.stringcare.plugin.internal
22

33
import dev.vyp.stringcare.plugin.StringCareConfiguration
44
import dev.vyp.stringcare.plugin.domain.models.Backupable
5+
import org.gradle.api.Project
56
import java.io.File
67

78
private fun shouldTraverse(dir: File): Boolean {
@@ -16,19 +17,37 @@ internal fun <T> locateConfiguredFiles(
1617
projectPath: String,
1718
configuration: StringCareConfiguration,
1819
debugHeader: String,
20+
project: Project? = null,
21+
includeNames: List<String>,
1922
isValid: (File, StringCareConfiguration) -> Boolean,
2023
mapFile: (File, StringCareConfiguration) -> T?,
2124
): List<T> {
2225
if (configuration.debug) {
2326
println(debugHeader)
2427
}
2528
val normalized = configuration.normalize()
26-
return File(projectPath)
27-
.walkTopDown()
28-
.onEnter(::shouldTraverse)
29+
val candidateFiles =
30+
when (project) {
31+
null ->
32+
File(projectPath)
33+
.walkTopDown()
34+
.onEnter(::shouldTraverse)
35+
.toList()
36+
else ->
37+
project
38+
.fileTree(projectPath) { tree ->
39+
normalized.srcFolders.ifEmpty { listOf("src/main") }.forEach { src ->
40+
includeNames.forEach { name ->
41+
tree.include("$src/**/$name")
42+
}
43+
}
44+
tree.exclude("**/build/**", "**/.gradle/**", "**/.git/**", "**/node_modules/**")
45+
}.files
46+
.toList()
47+
}
48+
return candidateFiles
2949
.filter { file -> !file.isDirectory && isValid(file, normalized) }
3050
.mapNotNull { file -> mapFile(file, normalized) }
31-
.toList()
3251
}
3352

3453
internal fun <T : Backupable> backupLocatedFiles(

plugin/src/main/kotlin/dev/vyp/stringcare/plugin/internal/VariantApi.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,21 @@ fun Project.registerVariantObfuscationTasks(
5151
t.srcFoldersJson.set(srcJson)
5252
t.stringFilesJson.set(strJson)
5353
t.assetsFilesJson.set(assetsJson)
54+
val includes =
55+
config.srcFolders
56+
.ifEmpty { listOf("src/main/res") }
57+
.flatMap { src ->
58+
config.stringFiles
59+
.ifEmpty { listOf("strings.xml") }
60+
.map { name -> "$src/**/$name" }
61+
}
62+
t.xmlInputFiles.from(
63+
fileTree(absoluteProjectPath).matching { pattern ->
64+
pattern.include(includes)
65+
pattern.exclude("**/build/**", "**/.git/**", "**/.gradle/**", "**/node_modules/**")
66+
},
67+
)
68+
t.outputDirectory.set(layout.buildDirectory.dir("stringcare/obfuscate-strings/$variantName"))
5469
}
5570
tasks.register(
5671
"stringcareAfterMergeResources$variantCapitalized",

plugin/src/main/kotlin/dev/vyp/stringcare/plugin/internal/XParser.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,21 @@ import dev.vyp.stringcare.plugin.domain.models.SAttribute
77
import dev.vyp.stringcare.plugin.domain.models.StringEntity
88
import dev.vyp.stringcare.plugin.infrastructure.parsers.XmlAttributes
99
import dev.vyp.stringcare.plugin.infrastructure.parsers.XmlParser
10+
import org.gradle.api.Project
1011
import org.w3c.dom.Element
1112
import java.io.File
1213

1314
fun locateResourceFiles(
1415
projectPath: String,
1516
configuration: StringCareConfiguration,
17+
project: Project? = null,
1618
): List<ResourceFile> =
1719
locateConfiguredFiles(
1820
projectPath = projectPath,
1921
configuration = configuration,
2022
debugHeader = "== RESOURCE FILES FOUND ======================================",
23+
project = project,
24+
includeNames = configuration.normalize().stringFiles.ifEmpty { listOf("strings.xml") },
2125
isValid = { file, normalized -> file.validForXMLConfiguration(normalized) },
2226
mapFile = { file, normalized -> file.resourceFile(normalized) },
2327
)

plugin/src/main/kotlin/dev/vyp/stringcare/plugin/tasks/ObfuscateAssetsTask.kt

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
package dev.vyp.stringcare.plugin.tasks
22

33
import dev.vyp.stringcare.plugin.StringCareConfiguration
4+
import dev.vyp.stringcare.plugin.domain.usecases.ObfuscateAssetsUseCase
45
import dev.vyp.stringcare.plugin.internal.PrintUtils
56
import dev.vyp.stringcare.plugin.internal.LoadResult
67
import dev.vyp.stringcare.plugin.internal.Stark
78
import dev.vyp.stringcare.plugin.internal.backupAssets
89
import dev.vyp.stringcare.plugin.internal.fingerPrint
9-
import dev.vyp.stringcare.plugin.internal.getContent
10-
import dev.vyp.stringcare.plugin.internal.locateAssetsFiles
1110
import dev.vyp.stringcare.plugin.internal.obfuscateAssets
12-
import dev.vyp.stringcare.plugin.internal.obfuscateFile
1311
import dev.vyp.stringcare.plugin.internal.parseJsonStringList
14-
import dev.vyp.stringcare.plugin.domain.models.forEachWithBackup
1512
import dev.vyp.stringcare.plugin.services.StringCareBuildService
1613
import org.gradle.api.DefaultTask
1714
import org.gradle.api.provider.Property
@@ -37,6 +34,8 @@ import org.gradle.work.DisableCachingByDefault
3734
* @property assetsFilesJson JSON array of asset file names/patterns to process.
3835
*/
3936
abstract class ObfuscateAssetsTask : DefaultTask() {
37+
private val obfuscateAssetsUseCase = ObfuscateAssetsUseCase()
38+
4039
@get:ServiceReference("stringCareBuildService")
4140
abstract val stringCareService: Property<StringCareBuildService>
4241

@@ -117,12 +116,7 @@ abstract class ObfuscateAssetsTask : DefaultTask() {
117116
}
118117
PrintUtils.print(moduleName.get(), "${variantName.get()}:$key")
119118
PrintUtils.print(moduleName.get(), backupAssets)
120-
val files = locateAssetsFiles(projectPath.get(), config)
121-
forEachWithBackup(files, tempRoot) { asset ->
122-
if (debug.get()) PrintUtils.print(null, asset.file.getContent())
123-
obfuscateFile(key, asset.file, config.applicationId)
124-
if (debug.get()) PrintUtils.print(null, asset.file.getContent())
125-
}
119+
obfuscateAssetsUseCase.obfuscate(projectPath.get(), config, tempRoot, key, project)
126120
PrintUtils.print(moduleName.get(), obfuscateAssets)
127121
}
128122
}

0 commit comments

Comments
 (0)