From 7ce4bd3330719b843ebf2daf4cc39e17839157b7 Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Mon, 26 Dec 2022 15:23:06 -0800 Subject: [PATCH] Copy stub APK into output directory --- build.py | 17 +++++++++++++++++ buildSrc/src/main/java/Setup.kt | 15 +++++++-------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/build.py b/build.py index 5c3fed2b8..d88b11834 100755 --- a/build.py +++ b/build.py @@ -425,6 +425,19 @@ def build_app(args): header('* Building the Magisk app') build_apk(args, 'app') + # Stub building is directly integrated into the main app + # build process. Copy the stub APK into output directory. + build_type = 'release' if args.release else 'debug' + apk = f'stub-{build_type}.apk' + source = op.join('app', 'src', 'main', 'assets', 'stub.apk') + target = op.join(config['outdir'], apk) + cp(source, target) + + +def build_stub(args): + header('* Building the stub app') + build_apk(args, 'stub') + def cleanup(args): support_targets = {'native', 'java'} @@ -444,6 +457,7 @@ def cleanup(args): if 'java' in args.target: header('* Cleaning java') execv([gradlew, 'app:clean', 'app:shared:clean', 'stub:clean']) + rm_rf(op.join('app', 'src', 'main', 'assets')) def setup_ndk(args): @@ -570,6 +584,9 @@ binary_parser.set_defaults(func=build_binary) app_parser = subparsers.add_parser('app', help='build the Magisk app') app_parser.set_defaults(func=build_app) +stub_parser = subparsers.add_parser('stub', help='build the stub app') +stub_parser.set_defaults(func=build_stub) + avd_parser = subparsers.add_parser( 'emulator', help='setup AVD for development') avd_parser.add_argument('-s', '--skip', action='store_true', diff --git a/buildSrc/src/main/java/Setup.kt b/buildSrc/src/main/java/Setup.kt index 596a80741..4eb49ffe6 100644 --- a/buildSrc/src/main/java/Setup.kt +++ b/buildSrc/src/main/java/Setup.kt @@ -192,10 +192,14 @@ fun Project.setupApp() { android.applicationVariants.all { val variantCapped = name.capitalize(Locale.ROOT) - val variantLowered = name.toLowerCase(Locale.ROOT) + + val stubTask = tasks.getByPath(":stub:package$variantCapped") + val stubApk = stubTask.outputs.files.asFileTree.filter { + it.name.endsWith(".apk") + } val syncAssets = tasks.register("sync${variantCapped}Assets", Sync::class) { - dependsOn(syncResources) + dependsOn(syncResources, stubTask) inputs.property("version", Config.version) inputs.property("versionCode", Config.versionCode) into("src/main/assets") @@ -210,12 +214,7 @@ fun Project.setupApp() { include("kernel_data_key.vbprivk", "kernel.keyblock") } } - val task = tasks.getByPath(":stub:package$variantCapped") - dependsOn(task) - val apk = task.outputs.files.asFileTree.filter { - it.name.endsWith(".apk") - } - from(apk) { + from(stubApk) { rename { "stub.apk" } } filesMatching("**/util_functions.sh") {