mirror of
https://github.com/revanced/Apktool.git
synced 2025-06-12 05:07:41 +02:00
Feat: Introduce "res-mode" options. (#3318)
* Revert "Remove Apktool Dummys. (#3258)"
This reverts commit 0e226928ce
.
* feat: properly add dummys
* refactor: shorten ResTypeSpec
* style: remove extra space
* refactor: extract FlagItem into own class
* refactor: notate which type is null
* fix: only add dummys if enabled
* feat: skip unknown (if enabled)
* feat: introduce "res-mode"
* feat: expose config on res table
* feat: add method to base attr for res skips
* fix: ensure autobuild doesn't choke
* refactor: remove java17 enhanced switch
* refactor: rename methods
* refactor: cleanup res-mode param
* test: introduction of test/sample apk
* refactor: make ResXmlPatcher public for loading XML
* test: assertions for dummy|leave|retain
* fix: prevent using `@null` as a name
* refactor: shorten long param for 'resm'
* refactor: leave for preserve
This commit is contained in:
@ -167,6 +167,30 @@ public class Main {
|
||||
if (cli.hasOption("m") || cli.hasOption("match-original")) {
|
||||
config.analysisMode = true;
|
||||
}
|
||||
if (cli.hasOption("res-mode") || cli.hasOption("resolve-resources-mode")) {
|
||||
String mode = cli.getOptionValue("res-mode");
|
||||
if (mode == null) {
|
||||
mode = cli.getOptionValue("resolve-resources-mode");
|
||||
}
|
||||
switch (mode) {
|
||||
case "remove":
|
||||
case "delete":
|
||||
config.setDecodeResolveMode(Config.DECODE_RES_RESOLVE_REMOVE);
|
||||
break;
|
||||
case "dummy":
|
||||
case "dummies":
|
||||
config.setDecodeResolveMode(Config.DECODE_RES_RESOLVE_DUMMY);
|
||||
break;
|
||||
case "keep":
|
||||
case "preserve":
|
||||
config.setDecodeResolveMode(Config.DECODE_RES_RESOLVE_RETAIN);
|
||||
break;
|
||||
default:
|
||||
System.err.println("Unknown resolve resources mode: " + mode);
|
||||
System.err.println("Expect: 'remove', 'dummy' or 'keep'.");
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
File outDir;
|
||||
if (cli.hasOption("o") || cli.hasOption("output")) {
|
||||
@ -301,8 +325,6 @@ public class Main {
|
||||
}
|
||||
|
||||
private static void _Options() {
|
||||
|
||||
// create options
|
||||
Option versionOption = Option.builder("version")
|
||||
.longOpt("version")
|
||||
.desc("Print the version.")
|
||||
@ -409,6 +431,13 @@ public class Main {
|
||||
.desc("Skip changes detection and build all files.")
|
||||
.build();
|
||||
|
||||
Option resolveResModeOption = Option.builder("resm")
|
||||
.longOpt("resource-mode")
|
||||
.desc("Sets the resolve resources mode. Possible values are: 'remove' (default), 'dummy' or 'keep'.")
|
||||
.hasArg(true)
|
||||
.argName("mode")
|
||||
.build();
|
||||
|
||||
Option aaptOption = Option.builder("a")
|
||||
.longOpt("aapt")
|
||||
.hasArg(true)
|
||||
@ -469,6 +498,7 @@ public class Main {
|
||||
decodeOptions.addOption(apiLevelOption);
|
||||
decodeOptions.addOption(noAssetOption);
|
||||
decodeOptions.addOption(forceManOption);
|
||||
decodeOptions.addOption(resolveResModeOption);
|
||||
|
||||
buildOptions.addOption(apiLevelOption);
|
||||
buildOptions.addOption(debugBuiOption);
|
||||
@ -525,6 +555,7 @@ public class Main {
|
||||
allOptions.addOption(debugDecOption);
|
||||
allOptions.addOption(noDbgOption);
|
||||
allOptions.addOption(forceManOption);
|
||||
allOptions.addOption(resolveResModeOption);
|
||||
allOptions.addOption(noAssetOption);
|
||||
allOptions.addOption(keepResOption);
|
||||
allOptions.addOption(debugBuiOption);
|
||||
|
Reference in New Issue
Block a user