提交 61b0e437 编写于 作者: J johnsonlee 提交者: zhiguoWang

fix issue #192

上级 465ec427
......@@ -115,3 +115,29 @@ val BaseVariant.processResTask: ProcessAndroidResources
GTE_V3_2 -> VariantScopeV32.getProcessResourcesTask(scope)
else -> VariantScopeV30.getProcessResourcesTask(scope)
}
/**
* The `bundleResources` tasks associates with this variant
*/
val BaseVariant.bundleResourcesTask: Task?
get() = when {
GTE_V4_X -> VariantScopeV40.getBundleResourceTask(scope)
GTE_V3_6 -> VariantScopeV36.getBundleResourceTask(scope)
GTE_V3_5 -> VariantScopeV35.getBundleResourceTask(scope)
GTE_V3_3 -> VariantScopeV33.getBundleResourceTask(scope)
GTE_V3_2 -> VariantScopeV32.getBundleResourceTask(scope)
else -> VariantScopeV30.getBundleResourceTask(scope)
}
/**
* The `packageBundle` tasks associates with this variant
*/
val BaseVariant.packageBundleTask: Task?
get() = when {
GTE_V4_X -> VariantScopeV40.getPackageBundleTask(scope)
GTE_V3_6 -> VariantScopeV36.getPackageBundleTask(scope)
GTE_V3_5 -> VariantScopeV35.getPackageBundleTask(scope)
GTE_V3_3 -> VariantScopeV33.getPackageBundleTask(scope)
GTE_V3_2 -> VariantScopeV32.getPackageBundleTask(scope)
else -> VariantScopeV30.getPackageBundleTask(scope)
}
......@@ -3,42 +3,83 @@ package com.didiglobal.booster.gradle
import com.android.build.gradle.internal.variant.BaseVariantData
fun BaseVariantData.isAar() = when {
GTE_V4_X -> BaseVariantDataV40.isAar(this)
GTE_V3_6 -> BaseVariantDataV36.isAar(this)
GTE_V3_5 -> BaseVariantDataV35.isAar(this)
GTE_V3_3 -> BaseVariantDataV33.isAar(this)
GTE_V3_2 -> BaseVariantDataV32.isAar(this)
else -> BaseVariantDataV30.isAar(this)
}
fun BaseVariantData.isApk() = when {
GTE_V4_X -> BaseVariantDataV40.isApk(this)
GTE_V3_6 -> BaseVariantDataV36.isApk(this)
GTE_V3_5 -> BaseVariantDataV35.isApk(this)
GTE_V3_3 -> BaseVariantDataV33.isApk(this)
GTE_V3_2 -> BaseVariantDataV32.isApk(this)
else -> BaseVariantDataV30.isApk(this)
}
fun BaseVariantData.isBaseModule() = when {
GTE_V4_X -> BaseVariantDataV40.isBaseModule(this)
GTE_V3_6 -> BaseVariantDataV36.isBaseModule(this)
GTE_V3_5 -> BaseVariantDataV35.isBaseModule(this)
GTE_V3_3 -> BaseVariantDataV33.isBaseModule(this)
GTE_V3_2 -> BaseVariantDataV32.isBaseModule(this)
else -> BaseVariantDataV30.isBaseModule(this)
}
fun BaseVariantData.isDynamicFeature() = when {
GTE_V4_X -> BaseVariantDataV40.isDynamicFeature(this)
GTE_V3_6 -> BaseVariantDataV36.isDynamicFeature(this)
GTE_V3_5 -> BaseVariantDataV35.isDynamicFeature(this)
GTE_V3_3 -> BaseVariantDataV33.isDynamicFeature(this)
GTE_V3_2 -> BaseVariantDataV32.isDynamicFeature(this)
else -> BaseVariantDataV30.isDynamicFeature(this)
}
fun BaseVariantData.isForTesting() = when {
GTE_V4_X -> BaseVariantDataV40.isForTesting(this)
GTE_V3_6 -> BaseVariantDataV36.isForTesting(this)
GTE_V3_5 -> BaseVariantDataV35.isForTesting(this)
GTE_V3_3 -> BaseVariantDataV33.isForTesting(this)
GTE_V3_2 -> BaseVariantDataV32.isForTesting(this)
else -> BaseVariantDataV30.isForTesting(this)
}
fun BaseVariantData.isHybrid() = when {
GTE_V4_X -> BaseVariantDataV40.isHybrid(this)
GTE_V3_6 -> BaseVariantDataV36.isHybrid(this)
GTE_V3_5 -> BaseVariantDataV35.isHybrid(this)
GTE_V3_3 -> BaseVariantDataV33.isHybrid(this)
GTE_V3_2 -> BaseVariantDataV32.isHybrid(this)
else -> BaseVariantDataV30.isHybrid(this)
}
fun BaseVariantData.getAnalyticsVariantType() = when {
GTE_V4_X -> BaseVariantDataV40.getAnalyticsVariantType(this)
GTE_V3_6 -> BaseVariantDataV36.getAnalyticsVariantType(this)
GTE_V3_5 -> BaseVariantDataV35.getAnalyticsVariantType(this)
GTE_V3_3 -> BaseVariantDataV33.getAnalyticsVariantType(this)
GTE_V3_2 -> BaseVariantDataV32.getAnalyticsVariantType(this)
else -> BaseVariantDataV30.getAnalyticsVariantType(this)
}
fun BaseVariantData.getApplicationId() = when {
GTE_V4_X -> BaseVariantDataV40.getApplicationId(this)
GTE_V3_6 -> BaseVariantDataV36.getApplicationId(this)
GTE_V3_5 -> BaseVariantDataV35.getApplicationId(this)
GTE_V3_3 -> BaseVariantDataV33.getApplicationId(this)
GTE_V3_2 -> BaseVariantDataV32.getApplicationId(this)
else -> BaseVariantDataV30.getApplicationId(this)
}
fun BaseVariantData.getOriginalApplicationId() = when {
GTE_V4_X -> BaseVariantDataV40.getOriginalApplicationId(this)
GTE_V3_6 -> BaseVariantDataV36.getOriginalApplicationId(this)
GTE_V3_5 -> BaseVariantDataV35.getOriginalApplicationId(this)
GTE_V3_3 -> BaseVariantDataV33.getOriginalApplicationId(this)
GTE_V3_2 -> BaseVariantDataV32.getOriginalApplicationId(this)
else -> BaseVariantDataV30.getOriginalApplicationId(this)
}
......@@ -66,7 +66,7 @@ val TransformInvocation.runtimeClasspath: Collection<File>
* Returns the application id
*/
val TransformInvocation.applicationId: String
get() = variant.applicationId
get() = variant.variantData.getApplicationId()
/**
* Returns the original application ID before any overrides from flavors
......
......@@ -2,6 +2,7 @@ package com.didiglobal.booster.gradle;
import com.android.build.gradle.internal.variant.BaseVariantData;
import com.google.wireless.android.sdk.stats.GradleBuildVariant;
import org.jetbrains.annotations.NotNull;
class BaseVariantDataV30 {
......@@ -33,6 +34,12 @@ class BaseVariantDataV30 {
return variantData.getType().getAnalyticsVariantType();
}
@NotNull
public static String getApplicationId(@NotNull BaseVariantData variantData) {
return variantData.getVariantConfiguration().getApplicationId();
}
@NotNull
static String getOriginalApplicationId(final BaseVariantData variantData) {
return variantData.getVariantConfiguration().getOriginalApplicationId();
}
......
......@@ -9,8 +9,10 @@ import com.android.build.gradle.tasks.MergeResources;
import com.android.build.gradle.tasks.ProcessAndroidResources;
import com.android.ide.common.res2.ResourceSet;
import com.android.sdklib.BuildToolInfo;
import org.gradle.api.Task;
import org.gradle.api.tasks.TaskContainer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.lang.reflect.Method;
......@@ -141,4 +143,14 @@ class VariantScopeV30 {
final TaskContainer tasks = scope.getGlobalScope().getProject().getTasks();
return (ProcessAndroidResources) tasks.getByName(scope.getProcessResourcesTask().getName());
}
@Nullable
public static Task getBundleResourceTask(@NotNull final VariantScope scope) {
return null;
}
@Nullable
static Task getPackageBundleTask(@NotNull final VariantScope scope) {
return null;
}
}
......@@ -2,6 +2,7 @@ package com.didiglobal.booster.gradle;
import com.android.build.gradle.internal.variant.BaseVariantData;
import com.google.wireless.android.sdk.stats.GradleBuildVariant;
import org.jetbrains.annotations.NotNull;
class BaseVariantDataV32 {
......@@ -33,4 +34,13 @@ class BaseVariantDataV32 {
return variantData.getType().getAnalyticsVariantType();
}
@NotNull
public static String getApplicationId(@NotNull BaseVariantData variantData) {
return variantData.getVariantConfiguration().getApplicationId();
}
@NotNull
static String getOriginalApplicationId(final BaseVariantData variantData) {
return variantData.getVariantConfiguration().getOriginalApplicationId();
}
}
......@@ -4,12 +4,17 @@ import com.android.build.api.artifact.ArtifactType;
import com.android.build.api.artifact.BuildArtifactType;
import com.android.build.gradle.BaseExtension;
import com.android.build.gradle.internal.api.artifact.SourceArtifactType;
import com.android.build.gradle.internal.res.LinkAndroidResForBundleTask;
import com.android.build.gradle.internal.scope.AnchorOutputType;
import com.android.build.gradle.internal.scope.InternalArtifactType;
import com.android.build.gradle.internal.scope.VariantScope;
import com.android.build.gradle.tasks.ProcessAndroidResources;
import com.android.sdklib.BuildToolInfo;
import org.gradle.api.Task;
import org.gradle.api.UnknownTaskException;
import org.gradle.api.tasks.TaskContainer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.util.Arrays;
......@@ -121,4 +126,19 @@ class VariantScopeV32 {
static ProcessAndroidResources getProcessResourcesTask(@NotNull final VariantScope scope) {
return scope.getProcessResourcesTask();
}
@Nullable
static LinkAndroidResForBundleTask getBundleResourceTask(@NotNull final VariantScope scope) {
final TaskContainer tasks = scope.getGlobalScope().getProject().getTasks();
try {
return (LinkAndroidResForBundleTask) tasks.getByName(scope.getTaskName("bundle", "Resources"));
} catch (final UnknownTaskException e) {
return null;
}
}
@Nullable
static Task getPackageBundleTask(@NotNull final VariantScope scope) {
return null;
}
}
package com.didiglobal.booster.gradle;
import com.android.build.gradle.internal.variant.BaseVariantData;
import com.google.wireless.android.sdk.stats.GradleBuildVariant;
import org.jetbrains.annotations.NotNull;
class BaseVariantDataV33 {
static boolean isForTesting(final BaseVariantData variantData) {
return variantData.getType().isForTesting();
}
static boolean isAar(final BaseVariantData variantData) {
return variantData.getType().isAar();
}
static boolean isApk(final BaseVariantData variantData) {
return variantData.getType().isApk();
}
static boolean isBaseModule(final BaseVariantData variantData) {
return variantData.getType().isBaseModule();
}
static boolean isDynamicFeature(final BaseVariantData variantData) {
return variantData.getType().isDynamicFeature();
}
static boolean isHybrid(final BaseVariantData variantData) {
return variantData.getType().isHybrid();
}
static GradleBuildVariant.VariantType getAnalyticsVariantType(final BaseVariantData variantData) {
return variantData.getType().getAnalyticsVariantType();
}
@NotNull
static String getApplicationId(@NotNull BaseVariantData variantData) {
return variantData.getVariantConfiguration().getApplicationId();
}
@NotNull
static String getOriginalApplicationId(final BaseVariantData variantData) {
return variantData.getVariantConfiguration().getOriginalApplicationId();
}
}
......@@ -4,13 +4,17 @@ import com.android.build.api.artifact.ArtifactType;
import com.android.build.api.artifact.BuildArtifactType;
import com.android.build.gradle.BaseExtension;
import com.android.build.gradle.internal.api.artifact.SourceArtifactType;
import com.android.build.gradle.internal.res.LinkAndroidResForBundleTask;
import com.android.build.gradle.internal.scope.AnchorOutputType;
import com.android.build.gradle.internal.scope.InternalArtifactType;
import com.android.build.gradle.internal.scope.VariantScope;
import com.android.build.gradle.internal.tasks.PackageBundleTask;
import com.android.build.gradle.tasks.ProcessAndroidResources;
import com.android.sdklib.BuildToolInfo;
import org.gradle.api.UnknownTaskException;
import org.gradle.api.tasks.TaskContainer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.util.Arrays;
......@@ -121,4 +125,24 @@ class VariantScopeV33 {
final TaskContainer tasks = scope.getGlobalScope().getProject().getTasks();
return (ProcessAndroidResources) tasks.getByName(scope.getTaskName("process", "Resources"));
}
@Nullable
static LinkAndroidResForBundleTask getBundleResourceTask(@NotNull final VariantScope scope) {
final TaskContainer tasks = scope.getGlobalScope().getProject().getTasks();
try {
return (LinkAndroidResForBundleTask) tasks.getByName(scope.getTaskName("bundle", "Resources"));
} catch (final UnknownTaskException e) {
return null;
}
}
@Nullable
static PackageBundleTask getPackageBundleTask(@NotNull VariantScope scope) {
final TaskContainer tasks = scope.getGlobalScope().getProject().getTasks();
try {
return (PackageBundleTask) tasks.getByName(scope.getTaskName("package", "Bundle"));
} catch (final UnknownTaskException e) {
return null;
}
}
}
package com.didiglobal.booster.gradle;
import com.android.build.gradle.internal.variant.BaseVariantData;
import com.google.wireless.android.sdk.stats.GradleBuildVariant;
import org.jetbrains.annotations.NotNull;
class BaseVariantDataV35 {
static boolean isForTesting(final BaseVariantData variantData) {
return variantData.getType().isForTesting();
}
static boolean isAar(final BaseVariantData variantData) {
return variantData.getType().isAar();
}
static boolean isApk(final BaseVariantData variantData) {
return variantData.getType().isApk();
}
static boolean isBaseModule(final BaseVariantData variantData) {
return variantData.getType().isBaseModule();
}
static boolean isDynamicFeature(final BaseVariantData variantData) {
return variantData.getType().isDynamicFeature();
}
static boolean isHybrid(final BaseVariantData variantData) {
return variantData.getType().isHybrid();
}
static GradleBuildVariant.VariantType getAnalyticsVariantType(final BaseVariantData variantData) {
return variantData.getType().getAnalyticsVariantType();
}
@NotNull
static String getApplicationId(@NotNull BaseVariantData variantData) {
return variantData.getVariantConfiguration().getApplicationId();
}
@NotNull
static String getOriginalApplicationId(final BaseVariantData variantData) {
return variantData.getVariantConfiguration().getOriginalApplicationId();
}
}
......@@ -4,14 +4,18 @@ import com.android.build.api.artifact.ArtifactType;
import com.android.build.api.artifact.BuildArtifactType;
import com.android.build.gradle.BaseExtension;
import com.android.build.gradle.internal.api.artifact.SourceArtifactType;
import com.android.build.gradle.internal.res.LinkAndroidResForBundleTask;
import com.android.build.gradle.internal.scope.AnchorOutputType;
import com.android.build.gradle.internal.scope.InternalArtifactType;
import com.android.build.gradle.internal.scope.VariantScope;
import com.android.build.gradle.internal.tasks.PackageBundleTask;
import com.android.build.gradle.tasks.ProcessAndroidResources;
import com.android.sdklib.BuildToolInfo;
import org.gradle.api.UnknownTaskException;
import org.gradle.api.file.FileSystemLocation;
import org.gradle.api.tasks.TaskContainer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.util.Arrays;
......@@ -129,4 +133,24 @@ class VariantScopeV35 {
.filter(Objects::nonNull)
.collect(Collectors.toList());
}
@Nullable
static LinkAndroidResForBundleTask getBundleResourceTask(@NotNull final VariantScope scope) {
final TaskContainer tasks = scope.getGlobalScope().getProject().getTasks();
try {
return (LinkAndroidResForBundleTask) tasks.getByName(scope.getTaskName("bundle", "Resources"));
} catch (final UnknownTaskException e) {
return null;
}
}
@Nullable
static PackageBundleTask getPackageBundleTask(@NotNull VariantScope scope) {
final TaskContainer tasks = scope.getGlobalScope().getProject().getTasks();
try {
return (PackageBundleTask) tasks.getByName(scope.getTaskName("package", "Bundle"));
} catch (final UnknownTaskException e) {
return null;
}
}
}
\ No newline at end of file
package com.didiglobal.booster.gradle;
import com.android.build.gradle.internal.variant.BaseVariantData;
import com.google.wireless.android.sdk.stats.GradleBuildVariant;
import org.jetbrains.annotations.NotNull;
class BaseVariantDataV36 {
static boolean isForTesting(final BaseVariantData variantData) {
return variantData.getType().isForTesting();
}
static boolean isAar(final BaseVariantData variantData) {
return variantData.getType().isAar();
}
static boolean isApk(final BaseVariantData variantData) {
return variantData.getType().isApk();
}
static boolean isBaseModule(final BaseVariantData variantData) {
return variantData.getType().isBaseModule();
}
static boolean isDynamicFeature(final BaseVariantData variantData) {
return variantData.getType().isDynamicFeature();
}
static boolean isHybrid(final BaseVariantData variantData) {
return variantData.getType().isHybrid();
}
static GradleBuildVariant.VariantType getAnalyticsVariantType(final BaseVariantData variantData) {
return variantData.getType().getAnalyticsVariantType();
}
@NotNull
static String getApplicationId(@NotNull BaseVariantData variantData) {
return variantData.getVariantConfiguration().getApplicationId();
}
@NotNull
static String getOriginalApplicationId(final BaseVariantData variantData) {
return variantData.getVariantConfiguration().getOriginalApplicationId();
}
}
......@@ -2,14 +2,18 @@ package com.didiglobal.booster.gradle;
import com.android.build.api.artifact.ArtifactType;
import com.android.build.gradle.BaseExtension;
import com.android.build.gradle.internal.res.LinkAndroidResForBundleTask;
import com.android.build.gradle.internal.scope.AnchorOutputType;
import com.android.build.gradle.internal.scope.InternalArtifactType;
import com.android.build.gradle.internal.scope.VariantScope;
import com.android.build.gradle.internal.tasks.PackageBundleTask;
import com.android.build.gradle.tasks.ProcessAndroidResources;
import com.android.sdklib.BuildToolInfo;
import org.gradle.api.UnknownTaskException;
import org.gradle.api.file.FileSystemLocation;
import org.gradle.api.tasks.TaskContainer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.util.AbstractMap;
......@@ -123,4 +127,23 @@ class VariantScopeV36 {
return (ProcessAndroidResources) tasks.getByName(scope.getTaskName("process", "Resources"));
}
@Nullable
static LinkAndroidResForBundleTask getBundleResourceTask(@NotNull final VariantScope scope) {
final TaskContainer tasks = scope.getGlobalScope().getProject().getTasks();
try {
return (LinkAndroidResForBundleTask) tasks.getByName(scope.getTaskName("bundle", "Resources"));
} catch (final UnknownTaskException e) {
return null;
}
}
@Nullable
static PackageBundleTask getPackageBundleTask(@NotNull VariantScope scope) {
final TaskContainer tasks = scope.getGlobalScope().getProject().getTasks();
try {
return (PackageBundleTask) tasks.getByName(scope.getTaskName("package", "Bundle"));
} catch (final UnknownTaskException e) {
return null;
}
}
}
package com.didiglobal.booster.gradle;
import com.android.build.gradle.internal.variant.BaseVariantData;
import com.google.wireless.android.sdk.stats.GradleBuildVariant;
import org.jetbrains.annotations.NotNull;
class BaseVariantDataV40 {
static boolean isForTesting(final BaseVariantData variantData) {
return variantData.getType().isForTesting();
}
static boolean isAar(final BaseVariantData variantData) {
return variantData.getType().isAar();
}
static boolean isApk(final BaseVariantData variantData) {
return variantData.getType().isApk();
}
static boolean isBaseModule(final BaseVariantData variantData) {
return variantData.getType().isBaseModule();
}
static boolean isDynamicFeature(final BaseVariantData variantData) {
return variantData.getType().isDynamicFeature();
}
static boolean isHybrid(final BaseVariantData variantData) {
return false;
}
static GradleBuildVariant.VariantType getAnalyticsVariantType(final BaseVariantData variantData) {
return variantData.getType().getAnalyticsVariantType();
}
@NotNull
static String getApplicationId(@NotNull BaseVariantData variantData) {
return variantData.getVariantDslInfo().getApplicationId();
}
static String getOriginalApplicationId(final BaseVariantData variantData) {
return variantData.getVariantDslInfo().getOriginalApplicationId();
}
......
package com.didiglobal.booster.gradle;
import com.android.build.gradle.BaseExtension;
import com.android.build.gradle.internal.res.LinkAndroidResForBundleTask;
import com.android.build.gradle.internal.scope.AnchorOutputType;
import com.android.build.gradle.internal.scope.InternalArtifactType;
import com.android.build.gradle.internal.scope.SingleArtifactType;
import com.android.build.gradle.internal.scope.VariantScope;
import com.android.build.gradle.internal.tasks.PackageBundleTask;
import com.android.build.gradle.tasks.ProcessAndroidResources;
import com.android.sdklib.BuildToolInfo;
import org.gradle.api.UnknownTaskException;
import org.gradle.api.file.FileSystemLocation;
import org.gradle.api.tasks.TaskContainer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.util.AbstractMap;
......@@ -124,4 +128,23 @@ class VariantScopeV40 {
return (ProcessAndroidResources) tasks.getByName(scope.getTaskName("process", "Resources"));
}
@Nullable
static LinkAndroidResForBundleTask getBundleResourceTask(@NotNull final VariantScope scope) {
final TaskContainer tasks = scope.getGlobalScope().getProject().getTasks();
try {
return (LinkAndroidResForBundleTask) tasks.getByName(scope.getTaskName("bundle", "Resources"));
} catch (final UnknownTaskException e) {
return null;
}
}
@Nullable
static PackageBundleTask getPackageBundleTask(@NotNull VariantScope scope) {
final TaskContainer tasks = scope.getGlobalScope().getProject().getTasks();
try {
return (PackageBundleTask) tasks.getByName(scope.getTaskName("package", "Bundle"));
} catch (final UnknownTaskException e) {
return null;
}
}
}
......@@ -48,7 +48,7 @@ fun CompressionResults.generateReport(variant: BaseVariant, artifact: String) {
logger.println("${it.sixth.padStart(maxWith6)} ${it.first.padEnd(maxWith1)} ${it.fifth.padStart(maxWith5)} ${it.seventh.padStart(maxWith7)} ${it.eighth}")
}
logger.println("-".repeat(maxWith1 + maxWith5 + maxWith6 + 2))
logger.println(" TOTAL ${decimal(table.sumByDouble { it.fourth.toDouble() }).padStart(fullWith - 13)}")
logger.println(" TOTAL ${decimal(table.sumByDouble { it.fourth.toDouble() }).padStart((fullWith - 13).coerceAtLeast(0))}")
}
}
......
......@@ -4,6 +4,7 @@ import com.android.build.gradle.api.BaseVariant
import com.didiglobal.booster.command.CommandInstaller
import com.didiglobal.booster.compression.task.CompressImages
import com.didiglobal.booster.gradle.aapt2Enabled
import com.didiglobal.booster.gradle.bundleResourcesTask
import com.didiglobal.booster.gradle.mergeResourcesTask
import com.didiglobal.booster.gradle.processResTask
import com.didiglobal.booster.gradle.project
......@@ -34,6 +35,7 @@ class SimpleCompressionTaskCreator(private val tool: CompressionTool, private va
}.apply {
dependsOn(install, deps)
variant.processResTask.dependsOn(this)
variant.bundleResourcesTask?.dependsOn(this)
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册