Skip to content

Commit d5aaa54

Browse files
committed
Fixed build.gradle
1 parent 91d7146 commit d5aaa54

2 files changed

Lines changed: 35 additions & 59 deletions

File tree

‎app/build.gradle‎

Lines changed: 34 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import com.android.build.gradle.tasks.ExternalNativeBuildTask
2+
import java.io.FileInputStream
23

34
plugins {
45
alias(libs.plugins.android.application)
56
}
7+
68
class JavaDex {
7-
public static String xxd_p(String file) {
9+
public static String xxd_p(String filePath) {
810
StringBuilder hexString = new StringBuilder()
11+
File file = new File(filePath)
912
try (FileInputStream fis = new FileInputStream(file)) {
1013
byte[] data = fis.readAllBytes()
1114
for (byte b : data) {
@@ -14,35 +17,24 @@ class JavaDex {
1417
}
1518
return hexString.toString()
1619
}
17-
18-
public static String base64_encode(String file) throws IOException {
19-
byte[] data
20-
try (FileInputStream fis = new FileInputStream(file)) {
21-
data = fis.readAllBytes()
22-
}
23-
return Base64.getEncoder().encodeToString(data)
24-
}
2520
}
21+
2622
android {
2723
namespace 'uk.lgl'
28-
compileSdk {
29-
version = release(36)
30-
}
24+
compileSdk 36
3125

3226
defaultConfig {
3327
applicationId "uk.lgl"
3428
minSdk 28
3529
targetSdk 36
3630
versionCode 1
31+
versionName "1.0"
3732

3833
ndk {
3934
abiFilters 'arm64-v8a'
4035
}
4136

42-
versionName "1.0"
4337
multiDexEnabled false
44-
45-
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
4638
}
4739

4840
buildTypes {
@@ -52,63 +44,47 @@ android {
5244
}
5345
}
5446

55-
compileOptions {
56-
sourceCompatibility JavaVersion.VERSION_11
57-
targetCompatibility JavaVersion.VERSION_11
58-
}
59-
60-
buildFeatures {
61-
buildConfig = true
62-
aidl = true
63-
prefab = true
64-
}
6547
externalNativeBuild {
6648
ndkBuild {
6749
path file('src/main/jni/Android.mk')
6850
}
6951
}
7052

71-
tasks.register("Dex2CppAnd8Up") {
72-
outputs.upToDateWhen { false }
53+
android.applicationVariants.all { variant ->
54+
def variantName = variant.name.capitalize()
55+
def taskName = "Dex2CppAnd8Up${variantName}"
7356

74-
inputs.files fileTree(dir: "${project.projectDir}/src/main/java", includes: ['**/*.java'])
75-
outputs.file("${project.projectDir}/src/main/jni/JavaGPP/Interface/OreoOrMore.h")
57+
def customTask = tasks.register(taskName) {
58+
outputs.upToDateWhen { false }
7659

77-
doFirst {
78-
def dexPath = "${project.buildDir}/intermediates/dex/debug/mergeDexDebug/classes.dex"
79-
80-
String string = JavaDex.xxd_p(dexPath)
60+
def mergeDexTask = tasks.findByName("mergeDex${variantName}")
61+
if (mergeDexTask) {
62+
dependsOn mergeDexTask
63+
}
8164

82-
def file = new File(project.projectDir, "src/main/jni/JavaGPP/Interface/OreoOrMore.h")
83-
file.parentFile.mkdirs()
65+
doLast {
66+
def dexDir = file("${project.buildDir}/intermediates/dex/${variant.name}/mergeDex${variantName}")
67+
def dexFiles = fileTree(dir: dexDir, include: "**/classes.dex")
8468

85-
file.write("#define OreoOrMore \"${string}\"")
69+
if (dexFiles.isEmpty()) {
70+
throw new GradleException("classes.dex not found for ${variant.name} in ${dexDir}")
71+
}
8672

87-
println "Dex2CppAnd8Up: Header generated successfully."
88-
}
89-
}
73+
def dexFile = dexFiles.first()
74+
String hexString = JavaDex.xxd_p(dexFile.absolutePath)
75+
def headerFile = file("${project.projectDir}/src/main/jni/JavaGPP/Interface/OreoOrMore.h")
9076

91-
tasks.register("Dex2Cpp") {
92-
dependsOn "Dex2CppAnd8Up"
93-
}
94-
tasks.withType(ExternalNativeBuildTask).configureEach { compileTask ->
95-
compileTask.dependsOn "Dex2Cpp"
96-
}
97-
tasks.all { task ->
98-
if (task.name == 'buildCMakeDebug[armeabi-v7a]') {
99-
task.dependsOn "Dex2Cpp"
100-
}
101-
102-
if (task.name == 'configureCMakeDebug[arm64-v8a]') {
103-
task.dependsOn "Dex2Cpp"
77+
headerFile.parentFile.mkdirs()
78+
headerFile.write("#define OreoOrMore \"${hexString}\"\n")
79+
println ">>> Success: Generated header for ${variantName}"
80+
}
10481
}
10582

106-
if (task.name == 'assembleDebug') {
107-
task.dependsOn "Dex2Cpp"
83+
tasks.configureEach { task ->
84+
if (task.name.startsWith("buildNdkBuild${variantName}") ||
85+
task.name.startsWith("externalNativeBuild${variantName}")) {
86+
task.dependsOn customTask
87+
}
10888
}
10989
}
110-
}
111-
112-
dependencies {
113-
11490
}

0 commit comments

Comments
 (0)