mirror of
https://github.com/revanced/Apktool.git
synced 2025-04-30 22:24:25 +02:00
feat: make aapt2 default (#3370)
This commit is contained in:
parent
cc5a8bad17
commit
679c133d21
@ -267,11 +267,13 @@ public class Main {
|
|||||||
if (cli.hasOption("nc") || cli.hasOption("no-crunch")) {
|
if (cli.hasOption("nc") || cli.hasOption("no-crunch")) {
|
||||||
config.noCrunch = true;
|
config.noCrunch = true;
|
||||||
}
|
}
|
||||||
|
if (cli.hasOption("use-aapt1")) {
|
||||||
|
config.useAapt2 = false;
|
||||||
|
}
|
||||||
|
|
||||||
// Temporary flag to enable the use of aapt2. This will transform in time to a use-aapt1 flag, which will be
|
if (cli.hasOption("use-aapt1") && cli.hasOption("use-aapt2")) {
|
||||||
// legacy and eventually removed.
|
System.err.println("You can only use one of --use-aapt1 or --use-aapt2.");
|
||||||
if (cli.hasOption("use-aapt2")) {
|
System.exit(1);
|
||||||
config.useAapt2 = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
File outFile;
|
File outFile;
|
||||||
@ -449,9 +451,14 @@ public class Main {
|
|||||||
.desc("Load aapt from specified location.")
|
.desc("Load aapt from specified location.")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
Option aapt1Option = Option.builder()
|
||||||
|
.longOpt("use-aapt1")
|
||||||
|
.desc("Use aapt binary instead of aapt2 during the build step.")
|
||||||
|
.build();
|
||||||
|
|
||||||
Option aapt2Option = Option.builder()
|
Option aapt2Option = Option.builder()
|
||||||
.longOpt("use-aapt2")
|
.longOpt("use-aapt2")
|
||||||
.desc("Use aapt2 binary instead of aapt1 during the build step.")
|
.desc("Use aapt2 binary instead of aapt during the build step.")
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
Option originalOption = Option.builder("c")
|
Option originalOption = Option.builder("c")
|
||||||
@ -509,7 +516,7 @@ public class Main {
|
|||||||
buildOptions.addOption(netSecConfOption);
|
buildOptions.addOption(netSecConfOption);
|
||||||
buildOptions.addOption(aaptOption);
|
buildOptions.addOption(aaptOption);
|
||||||
buildOptions.addOption(originalOption);
|
buildOptions.addOption(originalOption);
|
||||||
buildOptions.addOption(aapt2Option);
|
buildOptions.addOption(aapt1Option);
|
||||||
buildOptions.addOption(noCrunchOption);
|
buildOptions.addOption(noCrunchOption);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -568,6 +575,7 @@ public class Main {
|
|||||||
allOptions.addOption(originalOption);
|
allOptions.addOption(originalOption);
|
||||||
allOptions.addOption(verboseOption);
|
allOptions.addOption(verboseOption);
|
||||||
allOptions.addOption(quietOption);
|
allOptions.addOption(quietOption);
|
||||||
|
allOptions.addOption(aapt1Option);
|
||||||
allOptions.addOption(aapt2Option);
|
allOptions.addOption(aapt2Option);
|
||||||
allOptions.addOption(noCrunchOption);
|
allOptions.addOption(noCrunchOption);
|
||||||
allOptions.addOption(onlyMainClassesOption);
|
allOptions.addOption(onlyMainClassesOption);
|
||||||
|
@ -51,7 +51,7 @@ public class Config {
|
|||||||
public boolean verbose = false;
|
public boolean verbose = false;
|
||||||
public boolean copyOriginalFiles = false;
|
public boolean copyOriginalFiles = false;
|
||||||
public boolean updateFiles = false;
|
public boolean updateFiles = false;
|
||||||
public boolean useAapt2 = false;
|
public boolean useAapt2 = true;
|
||||||
public boolean noCrunch = false;
|
public boolean noCrunch = false;
|
||||||
public int forceApi = 0;
|
public int forceApi = 0;
|
||||||
|
|
||||||
|
@ -47,6 +47,7 @@ public class AndroidOreoNotSparseTest extends BaseTest {
|
|||||||
|
|
||||||
LOGGER.info("Building not_sparse.apk...");
|
LOGGER.info("Building not_sparse.apk...");
|
||||||
Config config = Config.getDefaultConfig();
|
Config config = Config.getDefaultConfig();
|
||||||
|
config.useAapt2 = false;
|
||||||
new ApkBuilder(config, sTestNewDir).build(testApk);
|
new ApkBuilder(config, sTestNewDir).build(testApk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,6 +47,7 @@ public class AndroidOreoSparseTest extends BaseTest {
|
|||||||
|
|
||||||
LOGGER.info("Building sparse.apk...");
|
LOGGER.info("Building sparse.apk...");
|
||||||
Config config = Config.getDefaultConfig();
|
Config config = Config.getDefaultConfig();
|
||||||
|
config.useAapt2 = false;
|
||||||
new ApkBuilder(config, sTestNewDir).build(testApk);
|
new ApkBuilder(config, sTestNewDir).build(testApk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,10 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package brut.androlib.aapt1;
|
package brut.androlib.aapt1;
|
||||||
|
|
||||||
import brut.androlib.ApkBuilder;
|
import brut.androlib.*;
|
||||||
import brut.androlib.ApkDecoder;
|
|
||||||
import brut.androlib.BaseTest;
|
|
||||||
import brut.androlib.TestUtils;
|
|
||||||
import brut.directory.ExtFile;
|
import brut.directory.ExtFile;
|
||||||
import brut.common.BrutException;
|
import brut.common.BrutException;
|
||||||
import brut.util.OS;
|
import brut.util.OS;
|
||||||
@ -44,7 +41,9 @@ public class BuildAndDecodeJarTest extends BaseTest {
|
|||||||
|
|
||||||
LOGGER.info("Building testjar.jar...");
|
LOGGER.info("Building testjar.jar...");
|
||||||
File testJar = new File(sTmpDir, "testjar.jar");
|
File testJar = new File(sTmpDir, "testjar.jar");
|
||||||
new ApkBuilder(sTestOrigDir).build(testJar);
|
Config config = Config.getDefaultConfig();
|
||||||
|
config.useAapt2 = false;
|
||||||
|
new ApkBuilder(config, sTestOrigDir).build(testJar);
|
||||||
|
|
||||||
LOGGER.info("Decoding testjar.jar...");
|
LOGGER.info("Decoding testjar.jar...");
|
||||||
ApkDecoder apkDecoder = new ApkDecoder(testJar);
|
ApkDecoder apkDecoder = new ApkDecoder(testJar);
|
||||||
|
@ -16,10 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package brut.androlib.aapt1;
|
package brut.androlib.aapt1;
|
||||||
|
|
||||||
import brut.androlib.ApkBuilder;
|
import brut.androlib.*;
|
||||||
import brut.androlib.ApkDecoder;
|
|
||||||
import brut.androlib.BaseTest;
|
|
||||||
import brut.androlib.TestUtils;
|
|
||||||
import brut.androlib.apk.ApkInfo;
|
import brut.androlib.apk.ApkInfo;
|
||||||
import brut.common.BrutException;
|
import brut.common.BrutException;
|
||||||
import brut.directory.ExtFile;
|
import brut.directory.ExtFile;
|
||||||
@ -52,7 +49,9 @@ public class BuildAndDecodeTest extends BaseTest {
|
|||||||
|
|
||||||
LOGGER.info("Building testapp.apk...");
|
LOGGER.info("Building testapp.apk...");
|
||||||
File testApk = new File(sTmpDir, "testapp.apk");
|
File testApk = new File(sTmpDir, "testapp.apk");
|
||||||
new ApkBuilder(sTestOrigDir).build(testApk);
|
Config config = Config.getDefaultConfig();
|
||||||
|
config.useAapt2 = false;
|
||||||
|
new ApkBuilder(config, sTestOrigDir).build(testApk);
|
||||||
|
|
||||||
LOGGER.info("Decoding testapp.apk...");
|
LOGGER.info("Decoding testapp.apk...");
|
||||||
ApkDecoder apkDecoder = new ApkDecoder(testApk);
|
ApkDecoder apkDecoder = new ApkDecoder(testApk);
|
||||||
|
@ -48,6 +48,7 @@ public class DebugTagRetainedTest extends BaseTest {
|
|||||||
|
|
||||||
LOGGER.info("Building issue1235.apk...");
|
LOGGER.info("Building issue1235.apk...");
|
||||||
Config config = Config.getDefaultConfig();
|
Config config = Config.getDefaultConfig();
|
||||||
|
config.useAapt2 = false;
|
||||||
config.debugMode = true;
|
config.debugMode = true;
|
||||||
|
|
||||||
File testApk = new File(sTmpDir, "issue1235.apk");
|
File testApk = new File(sTmpDir, "issue1235.apk");
|
||||||
|
@ -16,10 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package brut.androlib.aapt1;
|
package brut.androlib.aapt1;
|
||||||
|
|
||||||
import brut.androlib.ApkBuilder;
|
import brut.androlib.*;
|
||||||
import brut.androlib.ApkDecoder;
|
|
||||||
import brut.androlib.BaseTest;
|
|
||||||
import brut.androlib.TestUtils;
|
|
||||||
import brut.common.BrutException;
|
import brut.common.BrutException;
|
||||||
import brut.directory.ExtFile;
|
import brut.directory.ExtFile;
|
||||||
import brut.util.OS;
|
import brut.util.OS;
|
||||||
@ -46,7 +43,9 @@ public class DefaultBaksmaliVariableTest extends BaseTest {
|
|||||||
|
|
||||||
LOGGER.info("Building issue1481.jar...");
|
LOGGER.info("Building issue1481.jar...");
|
||||||
File testJar = new File(sTmpDir, "issue1481.jar");
|
File testJar = new File(sTmpDir, "issue1481.jar");
|
||||||
new ApkBuilder(sTestOrigDir).build(testJar);
|
Config config = Config.getDefaultConfig();
|
||||||
|
config.useAapt2 = false;
|
||||||
|
new ApkBuilder(config, sTestOrigDir).build(testJar);
|
||||||
|
|
||||||
LOGGER.info("Decoding issue1481.jar...");
|
LOGGER.info("Decoding issue1481.jar...");
|
||||||
ApkDecoder apkDecoder = new ApkDecoder(testJar);
|
ApkDecoder apkDecoder = new ApkDecoder(testJar);
|
||||||
|
@ -50,6 +50,7 @@ public class EmptyResourcesArscTest {
|
|||||||
|
|
||||||
LOGGER.info("Building issue1730.apk...");
|
LOGGER.info("Building issue1730.apk...");
|
||||||
Config config = Config.getDefaultConfig();
|
Config config = Config.getDefaultConfig();
|
||||||
|
config.useAapt2 = false;
|
||||||
new ApkBuilder(config, sTestNewDir).build(testApk);
|
new ApkBuilder(config, sTestNewDir).build(testApk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,12 +14,9 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package brut.androlib.decode;
|
package brut.androlib.aapt1;
|
||||||
|
|
||||||
import brut.androlib.ApkBuilder;
|
import brut.androlib.*;
|
||||||
import brut.androlib.ApkDecoder;
|
|
||||||
import brut.androlib.BaseTest;
|
|
||||||
import brut.androlib.TestUtils;
|
|
||||||
import brut.directory.ExtFile;
|
import brut.directory.ExtFile;
|
||||||
import brut.common.BrutException;
|
import brut.common.BrutException;
|
||||||
import brut.util.OS;
|
import brut.util.OS;
|
||||||
@ -43,7 +40,9 @@ public class ExternalEntityTest extends BaseTest {
|
|||||||
|
|
||||||
LOGGER.info("Building doctype.apk...");
|
LOGGER.info("Building doctype.apk...");
|
||||||
File testApk = new File(sTestOrigDir, "doctype.apk");
|
File testApk = new File(sTestOrigDir, "doctype.apk");
|
||||||
new ApkBuilder(sTestOrigDir).build(testApk);
|
Config config = Config.getDefaultConfig();
|
||||||
|
config.useAapt2 = false;
|
||||||
|
new ApkBuilder(config, sTestOrigDir).build(testApk);
|
||||||
|
|
||||||
LOGGER.info("Decoding doctype.apk...");
|
LOGGER.info("Decoding doctype.apk...");
|
||||||
ApkDecoder apkDecoder = new ApkDecoder(testApk);
|
ApkDecoder apkDecoder = new ApkDecoder(testApk);
|
@ -16,10 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package brut.androlib.aapt1;
|
package brut.androlib.aapt1;
|
||||||
|
|
||||||
import brut.androlib.ApkBuilder;
|
import brut.androlib.*;
|
||||||
import brut.androlib.ApkDecoder;
|
|
||||||
import brut.androlib.BaseTest;
|
|
||||||
import brut.androlib.TestUtils;
|
|
||||||
import brut.directory.ExtFile;
|
import brut.directory.ExtFile;
|
||||||
import brut.common.BrutException;
|
import brut.common.BrutException;
|
||||||
import brut.util.OS;
|
import brut.util.OS;
|
||||||
@ -54,8 +51,10 @@ public class LargeIntsInManifestTest extends BaseTest {
|
|||||||
apkDecoder.decode(outDir);
|
apkDecoder.decode(outDir);
|
||||||
|
|
||||||
// build issue767
|
// build issue767
|
||||||
|
Config config = Config.getDefaultConfig();
|
||||||
|
config.useAapt2 = false;
|
||||||
ExtFile testApk = new ExtFile(sTmpDir, apk + ".out");
|
ExtFile testApk = new ExtFile(sTmpDir, apk + ".out");
|
||||||
new ApkBuilder(testApk).build(null);
|
new ApkBuilder(config, testApk).build(null);
|
||||||
String newApk = apk + ".out" + File.separator + "dist" + File.separator + apk;
|
String newApk = apk + ".out" + File.separator + "dist" + File.separator + apk;
|
||||||
|
|
||||||
// decode issue767 again
|
// decode issue767 again
|
||||||
|
@ -16,10 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package brut.androlib.aapt1;
|
package brut.androlib.aapt1;
|
||||||
|
|
||||||
import brut.androlib.ApkBuilder;
|
import brut.androlib.*;
|
||||||
import brut.androlib.ApkDecoder;
|
|
||||||
import brut.androlib.BaseTest;
|
|
||||||
import brut.androlib.TestUtils;
|
|
||||||
import brut.directory.ExtFile;
|
import brut.directory.ExtFile;
|
||||||
import brut.common.BrutException;
|
import brut.common.BrutException;
|
||||||
import brut.util.OS;
|
import brut.util.OS;
|
||||||
@ -62,7 +59,9 @@ public class ProviderAttributeTest extends BaseTest {
|
|||||||
|
|
||||||
// build issue636
|
// build issue636
|
||||||
ExtFile testApk = new ExtFile(sTmpDir, apk + ".out");
|
ExtFile testApk = new ExtFile(sTmpDir, apk + ".out");
|
||||||
new ApkBuilder(testApk).build(null);
|
Config config = Config.getDefaultConfig();
|
||||||
|
config.useAapt2 = false;
|
||||||
|
new ApkBuilder(config, testApk).build(null);
|
||||||
String newApk = apk + ".out" + File.separator + "dist" + File.separator + apk;
|
String newApk = apk + ".out" + File.separator + "dist" + File.separator + apk;
|
||||||
assertTrue(fileExists(newApk));
|
assertTrue(fileExists(newApk));
|
||||||
|
|
||||||
|
@ -81,6 +81,7 @@ public class SharedLibraryTest extends BaseTest {
|
|||||||
Config config = Config.getDefaultConfig();
|
Config config = Config.getDefaultConfig();
|
||||||
config.frameworkDirectory = sTmpDir.getAbsolutePath();
|
config.frameworkDirectory = sTmpDir.getAbsolutePath();
|
||||||
config.frameworkTag = "shared";
|
config.frameworkTag = "shared";
|
||||||
|
config.useAapt2 = false;
|
||||||
|
|
||||||
// install library/framework
|
// install library/framework
|
||||||
new Framework(config).installFramework(new File(sTmpDir + File.separator + library));
|
new Framework(config).installFramework(new File(sTmpDir + File.separator + library));
|
||||||
|
@ -42,6 +42,7 @@ public class UnknownCompressionTest extends BaseTest {
|
|||||||
String apk = "deflated_unknowns.apk";
|
String apk = "deflated_unknowns.apk";
|
||||||
Config config = Config.getDefaultConfig();
|
Config config = Config.getDefaultConfig();
|
||||||
config.frameworkDirectory = sTmpDir.getAbsolutePath();
|
config.frameworkDirectory = sTmpDir.getAbsolutePath();
|
||||||
|
config.useAapt2 = false;
|
||||||
|
|
||||||
sTestOrigDir = new ExtFile(sTmpDir, apk);
|
sTestOrigDir = new ExtFile(sTmpDir, apk);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user