@@ -3,6 +3,7 @@ package momoi.plugin.apkmixin
33import com.android.apksigner.ApkSignerTool
44import com.wind.meditor.ManifestEditorMain
55import momoi.plugin.apkmixin.utils.child
6+ import momoi.plugin.apkmixin.utils.lifecycle
67import org.gradle.api.DefaultTask
78import org.gradle.api.Plugin
89import org.gradle.api.Project
@@ -33,7 +34,7 @@ class MixinPlugin : Plugin<Project> {
3334 private fun createMixinBaseTask (project : Project ) {
3435 project.tasks.register(" MixinApk" , MixinApkTask ::class .java) {
3536 val targetApkName = extension.targetApk ? : throw IllegalArgumentException (" targetApk must not be null" )
36- it.mixinAppDex = project.fileTree( " build/ intermediates/dex/release/mergeDexRelease" )
37+ it.mixinAppDex = project.layout.buildDirectory.dir( " intermediates/dex/release/mergeDexRelease" ).get().asFileTree
3738 it.targetAppFile = project.layout.projectDirectory.dir(" mixin" ).file(targetApkName)
3839 it.doLast {
3940 createMetadata(project)
@@ -47,7 +48,7 @@ class MixinPlugin : Plugin<Project> {
4748 it.doLast {
4849 processManifest(project, isDebug = true )
4950 sign(project)
50- createMetadata(project, extension.output.signedFileName)
51+ createMetadata(project, if ( extension.signing.enabled) extension. output.signedFileName else extension.output.unsignedFileName )
5152 }
5253 }
5354 }
@@ -58,12 +59,13 @@ class MixinPlugin : Plugin<Project> {
5859 it.doLast {
5960 processManifest(project, isDebug = false )
6061 sign(project)
61- createMetadata(project, extension.output.signedFileName)
62+ createMetadata(project, if ( extension.signing.enabled) extension. output.signedFileName else extension.output.unsignedFileName )
6263 }
6364 }
6465 }
6566
6667 private fun processManifest (project : Project , isDebug : Boolean ) {
68+ lifecycle(" Processing manifest..." )
6769 ManifestEditorMain .main(
6870 project.outputDir(extension).child(extension.output.mixinApkFileName).absolutePath,
6971 " -o" ,
@@ -76,15 +78,18 @@ class MixinPlugin : Plugin<Project> {
7678
7779 private fun sign (project : Project ) {
7880 if (extension.signing.enabled) {
81+ lifecycle(" Signing..." )
7982 val unsignedApkFile = project.outputDir(extension).child(extension.output.unsignedFileName)
83+ val signedApkFile = project.outputDir(extension).child(extension.output.signedFileName)
8084 ApkSignerTool .main(arrayOf(
8185 " sign" ,
8286 " --key" , extension.signing.keyFile?.absolutePath,
8387 " --cert" , extension.signing.certFile?.absolutePath,
84- " --out" , project.outputDir(extension).child(extension.output.signedFileName) .absolutePath,
88+ " --out" , signedApkFile .absolutePath,
8589 unsignedApkFile.absolutePath
8690 ))
8791 unsignedApkFile.delete()
92+ lifecycle(" Signed: ${signedApkFile.absolutePath} " )
8893 }
8994 }
9095
@@ -97,7 +102,7 @@ class MixinPlugin : Plugin<Project> {
97102 }
98103
99104 private fun createRedirectFile (project : Project ) {
100- project.projectDir.child( " build/ intermediates/apk_ide_redirect_file/debug/createDebugApkListingFileRedirect/redirect.txt" )
105+ project.layout.buildDirectory.file( " intermediates/apk_ide_redirect_file/debug/createDebugApkListingFileRedirect/redirect.txt" ).get().asFile
101106 .writeText("""
102107 #- File Locator -
103108 listingFile=../../../../../dist/output-metadata.json
@@ -108,7 +113,7 @@ class MixinPlugin : Plugin<Project> {
108113 project : Project ,
109114 fileName : String
110115 ) {
111- project.projectDir .child(" dist/ output-metadata.json" ).writeText("""
116+ project.outputDir(extension) .child(" output-metadata.json" ).writeText("""
112117 {
113118 "version": 3,
114119 "artifactType": {
@@ -133,14 +138,17 @@ class MixinPlugin : Plugin<Project> {
133138}
134139
135140abstract class MixinApkTask : DefaultTask () {
141+
142+ private val extension = project.extensions.findByType(ApkMixinExtension ::class .java) ? : ApkMixinExtension ()
143+
136144 @get:InputFiles
137145 abstract var mixinAppDex: FileCollection
138146
139147 @get:InputFile
140148 abstract var targetAppFile: RegularFile
141149
142150 @get:OutputFile
143- val outputFile : RegularFile = project.layout.projectDirectory.file(" dist/ ${ DEFAULT_MIXIN_APK_NAME } " )
151+ val outputMixinFile : RegularFile = project.layout.projectDirectory.dir(extension.output.outputDir). file(extension.output.mixinApkFileName )
144152
145153 init {
146154 dependsOn(" mergeDexRelease" )
0 commit comments