Skip to content

Commit

Permalink
[core] Stop to compress resources.asrc when targeting R+(version 30 a…
Browse files Browse the repository at this point in the history
…nd above)
  • Loading branch information
simpleton committed Sep 1, 2020
1 parent dad97e7 commit a6a955b
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 11 deletions.
Expand Up @@ -28,7 +28,7 @@
public class Configuration {

public static final String DEFAULT_DIGEST_ALG = "SHA1";
public static final String ASRC_FILE = "resource.asrc";
public static final String ASRC_FILE = "resources.arsc";
private static final String TAG_ISSUE = "issue";
private static final String ATTR_VALUE = "value";
private static final String ATTR_ID = "id";
Expand Down
Expand Up @@ -5,6 +5,7 @@
import java.util.ArrayList;

public class InputParam {

public final File mappingFile;
public final boolean use7zip;
public final boolean keepRoot;
Expand All @@ -26,6 +27,7 @@ public class InputParam {
public final String finalApkBackupPath;
public final String digestAlg;
public final int minSDKVersion;
public final int targetSDKVersion;

private InputParam(
File mappingFile,
Expand All @@ -48,7 +50,8 @@ private InputParam(
SignatureType signatureType,
String finalApkBackupPath,
String digestAlg,
int minSDKVersion) {
int minSDKVersion,
int targetSDKVersion) {

this.mappingFile = mappingFile;
this.use7zip = use7zip;
Expand All @@ -71,13 +74,15 @@ private InputParam(
this.finalApkBackupPath = finalApkBackupPath;
this.digestAlg = digestAlg;
this.minSDKVersion = minSDKVersion;
this.targetSDKVersion = targetSDKVersion;
}

public enum SignatureType {
SchemaV1, SchemaV2
}

public static class Builder {

private File mappingFile;
private boolean use7zip;
private boolean useSign;
Expand All @@ -99,6 +104,7 @@ public static class Builder {
private String finalApkBackupPath;
private String digestAlg;
private int minSDKVersion;
private int targetSDKVersion;

public Builder() {
use7zip = false;
Expand Down Expand Up @@ -138,7 +144,8 @@ public Builder setWhiteList(ArrayList<String> whiteList) {

public Builder setCompressFilePattern(ArrayList<String> compressFilePattern) {
if (compressFilePattern.contains(Configuration.ASRC_FILE)) {
System.out.printf("[Warning] compress %s will prevent optimization at runtime", Configuration.ASRC_FILE);
System.out.printf("[Warning] compress %s will prevent optimization at runtime",
Configuration.ASRC_FILE);
}
this.compressFilePattern = compressFilePattern;
return this;
Expand Down Expand Up @@ -219,7 +226,20 @@ public Builder setMinSDKVersion(int minSDKVersion) {
return this;
}

public Builder setTargetSDKVersion(int targetSDKVersion) {
this.targetSDKVersion = targetSDKVersion;
return this;
}

public InputParam create() {
if (targetSDKVersion >= 30) {
// Targeting R+ (version 30 and above) requires the resources.arsc of installed APKs
// to be stored uncompressed and aligned on a 4-byte boundary
this.compressFilePattern.remove(Configuration.ASRC_FILE);
System.out.printf("[Warning] Remove resources.arsc from the compressPattern. (%s)\n",
this.compressFilePattern);
}

return new InputParam(mappingFile,
use7zip,
useSign,
Expand All @@ -240,7 +260,8 @@ public InputParam create() {
signatureType,
finalApkBackupPath,
digestAlg,
minSDKVersion
minSDKVersion,
targetSDKVersion
);
}
}
Expand Down
Expand Up @@ -62,7 +62,9 @@ class AndResGuardTask extends DefaultTask {
variant.buildType.name,
variant.productFlavors,
variantName,
variant.mergedFlavor.minSdkVersion.apiLevel)
variant.mergedFlavor.minSdkVersion.apiLevel,
variant.mergedFlavor.targetSdkVersion.apiLevel,
)
}
}
}
Expand All @@ -74,7 +76,7 @@ class AndResGuardTask extends DefaultTask {
static isTargetFlavor(variantName, flavors, buildType) {
if (flavors.size() > 0) {
String flavor = flavors.get(0).name
return variantName.equalsIgnoreCase(flavor) || variantName.equalsIgnoreCase([flavors.collect {it.name}.join(""), buildType].join(""))
return variantName.equalsIgnoreCase(flavor) || variantName.equalsIgnoreCase([flavors.collect { it.name }.join(""), buildType].join(""))
}
return false
}
Expand Down Expand Up @@ -111,19 +113,19 @@ class AndResGuardTask extends DefaultTask {
0 &&
config.flavors.get(0).name ==
configuration.sourceFlavor)) {
RunGradleTask(config, configuration.sourceApk, config.minSDKVersion)
RunGradleTask(config, configuration.sourceApk, config.minSDKVersion, config.targetSDKVersion)
}
}
} else {
if (config.file == null || !config.file.exists()) {
throw new PathNotExist("Original APK not existed")
}
RunGradleTask(config, config.file.getAbsolutePath(), config.minSDKVersion)
RunGradleTask(config, config.file.getAbsolutePath(), config.minSDKVersion, config.targetSDKVersion)
}
}
}

def RunGradleTask(config, String absPath, int minSDKVersion) {
def RunGradleTask(config, String absPath, int minSDKVersion, int targetSDKVersion) {
def signConfig = config.signConfig
String packageName = config.packageName
ArrayList<String> whiteListFullName = new ArrayList<>()
Expand Down Expand Up @@ -152,6 +154,7 @@ class AndResGuardTask extends DefaultTask {
.setUseSign(configuration.useSign)
.setDigestAlg(configuration.digestalg)
.setMinSDKVersion(minSDKVersion)
.setTargetSDKVersion(targetSDKVersion)

if (configuration.finalApkBackupPath != null && configuration.finalApkBackupPath.length() > 0) {
builder.setFinalApkBackupPath(configuration.finalApkBackupPath)
Expand Down
Expand Up @@ -10,16 +10,19 @@ class BuildInfo {
def buildType
def flavors
def taskName
def minSDKVersion
int minSDKVersion
int targetSDKVersion

BuildInfo(file, sign, packageName, buildType, flavors, taskName, minSDKVersion) {

BuildInfo(file, sign, packageName, buildType, flavors, taskName, minSDKVersion, targetSDKVersion) {
this.file = file
this.signConfig = sign
this.packageName = packageName
this.buildType = buildType
this.flavors = flavors
this.taskName = taskName
this.minSDKVersion = minSDKVersion
this.targetSDKVersion = targetSDKVersion
}

@Override
Expand All @@ -30,6 +33,7 @@ class BuildInfo {
| flavors = ${flavors}
| taskname = ${taskName}
| minSDKVersion = ${minSDKVersion}
| targetSDKVersion = ${targetSDKVersion}
""".stripMargin()
}
}

0 comments on commit a6a955b

Please sign in to comment.