Skip to content
This repository has been archived by the owner on Sep 6, 2023. It is now read-only.

Commit

Permalink
同步 ApkTool 最新的commits
Browse files Browse the repository at this point in the history
  • Loading branch information
weg2022 committed Jul 13, 2023
1 parent 8acf88a commit 45046b7
Show file tree
Hide file tree
Showing 31 changed files with 1,857 additions and 2,075 deletions.

Large diffs are not rendered by default.

534 changes: 249 additions & 285 deletions apktool/androlib/src/main/java/brut/androlib/ApkDecoder.java

Large diffs are not rendered by default.

128 changes: 128 additions & 0 deletions apktool/androlib/src/main/java/brut/androlib/Config.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
package brut.androlib;

import com.apkide.common.ApplicationProvider;

import java.util.Collection;

import brut.androlib.err.AndrolibException;

public abstract class Config {
public final static short DECODE_SOURCES_NONE = 0x0000;
public final static short DECODE_SOURCES_SMALI = 0x0001;
public final static short DECODE_SOURCES_SMALI_ONLY_MAIN_CLASSES = 0x0010;

public final static short DECODE_RESOURCES_NONE = 0x0100;
public final static short DECODE_RESOURCES_FULL = 0x0101;

public final static short FORCE_DECODE_MANIFEST_NONE = 0x0000;
public final static short FORCE_DECODE_MANIFEST_FULL = 0x0001;

public final static short DECODE_ASSETS_NONE = 0x0000;
public final static short DECODE_ASSETS_FULL = 0x0001;

// Build options
public boolean forceBuildAll = false;
public boolean forceDeleteFramework = false;
public boolean debugMode = false;
public boolean netSecConf = false;
public boolean verbose = false;
public boolean copyOriginalFiles = false;
public boolean updateFiles = false;
public boolean isFramework = false;
public boolean resourcesAreCompressed = false;
public boolean useAapt2 = false;
public boolean noCrunch = false;
public int forceApi = 0;
public Collection<String> doNotCompress;

// Decode options
public short decodeSources = DECODE_SOURCES_SMALI;
public short decodeResources = DECODE_RESOURCES_FULL;
public short forceDecodeManifest = FORCE_DECODE_MANIFEST_NONE;
public short decodeAssets = DECODE_ASSETS_FULL;
public int apiLevel = 0;
public boolean analysisMode = false;
public boolean forceDelete = false;
public boolean keepBrokenResources = false;
public boolean baksmaliDebugMode = true;

// Common options
public String frameworkDirectory = null;
public String frameworkTag = null;
public String aaptPath = "";
public int aaptVersion = 1; // default to v1

// Utility functions
public boolean isAapt2() {
return this.useAapt2 || this.aaptVersion == 2;
}

public Config() {
setDefaultFrameworkDirectory();
}

private void setDefaultFrameworkDirectory() {
frameworkDirectory = ApplicationProvider.get().foundFile("android.jar").getAbsolutePath();
}

public void setDecodeSources(short mode) throws AndrolibException {
if (mode != DECODE_SOURCES_NONE && mode != DECODE_SOURCES_SMALI && mode != DECODE_SOURCES_SMALI_ONLY_MAIN_CLASSES) {
throw new AndrolibException("Invalid decode sources mode: " + mode);
}
if (decodeSources == DECODE_SOURCES_NONE && mode == DECODE_SOURCES_SMALI_ONLY_MAIN_CLASSES) {
ApkBuilder.LOGGER.info("--only-main-classes cannot be paired with -s/--no-src. Ignoring.");
return;
}
decodeSources = mode;
sync();
}

public void setDecodeResources(short mode) throws AndrolibException {
if (mode != DECODE_RESOURCES_NONE && mode != DECODE_RESOURCES_FULL) {
throw new AndrolibException("Invalid decode resources mode");
}
decodeResources = mode;
sync();
}

public void setForceDecodeManifest(short mode) throws AndrolibException {
if (mode != FORCE_DECODE_MANIFEST_NONE && mode != FORCE_DECODE_MANIFEST_FULL) {
throw new AndrolibException("Invalid force decode manifest mode");
}
forceDecodeManifest = mode;
sync();
}

public void setDecodeAssets(short mode) throws AndrolibException {
if (mode != DECODE_ASSETS_NONE && mode != DECODE_ASSETS_FULL) {
throw new AndrolibException("Invalid decode asset mode");
}
decodeAssets = mode;
sync();
}

private static final Object myLock=new Object();
private static Config myConfig =new Config() {
@Override
public void onChanged() {
//ignore
}
};

public void sync(){
onChanged();
}
public abstract void onChanged();

public static void set(Config config){
synchronized (myLock){
myConfig=config;
}
}

public static Config get(){
synchronized (myLock){
return myConfig;
}
}
}
19 changes: 17 additions & 2 deletions apktool/androlib/src/main/java/brut/androlib/meta/MetaInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,16 @@
import java.util.Collection;
import java.util.Map;

import brut.androlib.err.AndrolibException;
import brut.directory.DirectoryException;
import brut.directory.ExtFile;

public class MetaInfo {
public String version;
public String apkFileName;
public boolean isFrameworkApk;
public UsesFramework usesFramework;
public Map<String, String> sdkInfo;
public Map<String, String> sdkInfo;
public PackageInfo packageInfo;
public VersionInfo versionInfo;
public boolean compressionType;
Expand All @@ -46,6 +50,7 @@ public class MetaInfo {
public Map<String, String> unknownFiles;
public Collection<String> doNotCompress;


private static Yaml getYaml() {
DumperOptions options = new DumperOptions();
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
Expand All @@ -67,7 +72,7 @@ public void save(Writer output) {
}

public void save(File file) throws IOException {
try(
try (
FileOutputStream fos = new FileOutputStream(file);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
Writer writer = new BufferedWriter(outputStreamWriter)
Expand All @@ -79,4 +84,14 @@ public void save(File file) throws IOException {
public static MetaInfo load(InputStream is) {
return getYaml().loadAs(is, MetaInfo.class);
}


public static MetaInfo readMetaFile(ExtFile appDir)
throws AndrolibException {
try (InputStream in = appDir.getDirectory().getFileInput("apktool.yml")) {
return MetaInfo.load(in);
} catch (DirectoryException | IOException ex) {
throw new AndrolibException(ex);
}
}
}

This file was deleted.

Loading

0 comments on commit 45046b7

Please sign in to comment.