@@ -43,58 +43,73 @@ interface InjectedExecOps {
4343
4444android. libraryVariants. configureEach { variant ->
4545 String buildType = variant. buildType. name
46+ String buildTypeCap = buildType. capitalize()
47+ def compileTask = variant. javaCompileProvider
48+ def libServerCompileTask = project(' :libserver' ). tasks. named(" compile${ buildTypeCap} JavaWithJavac" )
4649 def injected = project. objects. newInstance(InjectedExecOps )
47- def jarTask = tasks. register(" create${ buildType.capitalize()} ServerJars" ) {
50+ tasks. register(" create${ buildTypeCap} ServerJars" ) {
51+ inputs. dir(compileTask. map { it. destinationDirectory. get() })
52+ inputs. dir(libServerCompileTask. map { it. destinationDirectory. get() })
53+
54+ String serverPkg = " io/github/muntashirakon/AppManager/server"
55+ String srcDir = buildType == " release" ? " main" : buildType
56+ File assetsDir = file(" ${ project.rootDir} /app/src/${ srcDir} /assets" )
57+ File amJar = new File (assetsDir, " am.jar" )
58+ File mainJar = new File (assetsDir, " main.jar" )
59+
60+ outputs. file(amJar)
61+ outputs. file(mainJar)
62+
4863 doLast {
49- println (" Build type: ${ buildType} " )
64+ println (" Building Server JARs for type: ${ buildType} " )
65+ assetsDir. mkdirs()
66+
67+ String serverClassDir = compileTask. get(). destinationDirectory. get(). asFile. absolutePath
68+ String libserverClassDir = libServerCompileTask. get(). destinationDirectory. get(). asFile. absolutePath + " /${ serverPkg} /common"
5069
51- String rootDir = project. rootDir. absolutePath
52- String serverPkg = " io/github/muntashirakon/AppManager/server"
53- String intermediatePath = " build/intermediates/javac/${ buildType} /compile${ buildType.capitalize()} JavaWithJavac/classes"
54- String serverClassDir = " ${ rootDir} /server/${ intermediatePath} /${ serverPkg} /"
55- String libserverClassDir = " ${ rootDir} /libserver/${ intermediatePath} /${ serverPkg} /common"
5670 String androidJar = " ${ android.sdkDirectory.path} /platforms/android-${ target_sdk} /android.jar"
57- String amJar = " ${ rootDir} /app/src/main/assets/am.jar"
58- String mainJar = " ${ rootDir} /app/src/main/assets/main.jar"
71+ String d8Path = " ${ android.sdkDirectory.path} /build-tools/${ android.buildToolsVersion} /d8"
5972
6073 println (" Creating am.jar..." )
61- def buildArgs = [' --release' , ' --output' , amJar, ' --classpath ' , androidJar]
62- buildArgs . addAll(Files . list(Paths . get(libserverClassDir)). filter {
74+ def amArgs = [' --release' , ' --min-api ' , min_sdk, ' -- output' , amJar. absolutePath , ' --lib ' , androidJar]
75+ amArgs . addAll(Files . list(Paths . get(libserverClassDir)). filter {
6376 ! it. fileName. toString(). startsWith(" IRootServiceManager" )
64- }. map { it. toString() }. collect(Collectors . toList()))
65- buildArgs . addAll(Files . list(Paths . get(serverClassDir)). filter {
66- ! it. fileName. toString(). startsWith(" RootServiceMain" )
67- }. map { it. toString() }. collect(Collectors . toList()))
77+ }. map { it. toString() }. sorted() . collect(Collectors . toList()))
78+ amArgs . addAll(Files . list(Paths . get(" ${ serverClassDir} / ${ serverPkg } " )). filter {
79+ ! it. fileName. toString(). startsWith(" RootServiceMain" ) && Files . isRegularFile(it)
80+ }. map { it. toString() }. sorted() . collect(Collectors . toList()))
6881 injected. execOps. exec {
69- workingDir = project. rootDir
70- executable = file(" ${ android.sdkDirectory.path} /build-tools/${ android.buildToolsVersion} /d8" )
71- args = buildArgs
82+ executable = d8Path
83+ args = amArgs
7284 }
7385 println (" Created ${ amJar} " )
7486
7587 println (" Creating main.jar..." )
76- buildArgs = [' --release' , ' --output' , mainJar, ' --classpath ' , androidJar]
77- buildArgs . addAll(Files . list(Paths . get(libserverClassDir)). filter {
88+ def mainArgs = [' --release' , ' --min-api ' , min_sdk, ' -- output' , mainJar. absolutePath , ' --lib ' , androidJar]
89+ mainArgs . addAll(Files . list(Paths . get(libserverClassDir)). filter {
7890 it. fileName. toString(). startsWith(" IRootServiceManager" ) || it. fileName. toString(). startsWith(" ServerUtils" )
79- }. map { it. toString() }. collect(Collectors . toList()))
80- buildArgs . addAll(Files . list(Paths . get(serverClassDir)). filter {
81- it. fileName. toString(). startsWith(" RootServiceMain" )
82- }. map { it. toString() }. collect(Collectors . toList()))
91+ }. map { it. toString() }. sorted() . collect(Collectors . toList()))
92+ mainArgs . addAll(Files . list(Paths . get(" ${ serverClassDir} / ${ serverPkg } " )). filter {
93+ it. fileName. toString(). startsWith(" RootServiceMain" ) && Files . isRegularFile(it)
94+ }. map { it. toString() }. sorted() . collect(Collectors . toList()))
8395 injected. execOps. exec {
84- workingDir = project. rootDir
85- executable = file(" ${ android.sdkDirectory.path} /build-tools/${ android.buildToolsVersion} /d8" )
86- args = buildArgs
96+ executable = d8Path
97+ args = mainArgs
8798 }
8899 println (" Created ${ mainJar} " )
89100 }
90101 }
91- javaCompileProvider. get(). finalizedBy(jarTask)
102+
103+ compileTask. configure { finalizedBy(" create${ buildTypeCap} ServerJars" ) }
92104}
93105
94106tasks. register(' cleanupServerJars' ) {
95107 doLast {
96- file(" ${ rootProject.projectDir.absolutePath} /app/src/main/assets/am.jar" ). delete()
97- file(" ${ rootProject.projectDir.absolutePath} /app/src/main/assets/main.jar" ). delete()
108+ String rootDir = rootProject. projectDir. absolutePath
109+ file(" ${ rootDir} /app/src/main/assets/am.jar" ). delete()
110+ file(" ${ rootDir} /app/src/main/assets/main.jar" ). delete()
111+ file(" ${ rootDir} /app/src/debug/assets/am.jar" ). delete()
112+ file(" ${ rootDir} /app/src/debug/assets/main.jar" ). delete()
98113 }
99114}
100115
0 commit comments