diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDexInfo.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDexInfo.java index 1ff7c113d1856e..10ef9234c87757 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDexInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDexInfo.java @@ -57,6 +57,7 @@ public Artifact getDeployJar() { } @Override + @Nullable public Artifact getFinalClassesDexZip() { return finalClassesDexZip; } @@ -88,14 +89,14 @@ public String getName() { @Override public AndroidDexInfo createInfo( Artifact deployJar, - Artifact finalClassesDexZip, + Object finalClassesDexZip, Object finalProguardOutputMap, Object javaResourceJar) throws EvalException { return new AndroidDexInfo( deployJar, - finalClassesDexZip, + fromNoneable(finalClassesDexZip, Artifact.class), fromNoneable(finalProguardOutputMap, Artifact.class), fromNoneable(javaResourceJar, Artifact.class)); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ApkActionsBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/ApkActionsBuilder.java index 3a1615b14a23e6..21802e53347a15 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/ApkActionsBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/ApkActionsBuilder.java @@ -77,7 +77,8 @@ public ApkActionsBuilder setNativeLibs(NativeLibs nativeLibs) { @CanIgnoreReturnValue public ApkActionsBuilder setClassesDex(Artifact classesDex) { Preconditions.checkArgument( - classesDex.getFilename().endsWith(".zip") + classesDex == null + || classesDex.getFilename().endsWith(".zip") || classesDex.getFilename().equals("classes.dex")); this.classesDex = classesDex; return this; diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidDexInfoApi.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidDexInfoApi.java index 2417c01b553d62..5c94a296fc746a 100644 --- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidDexInfoApi.java +++ b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android/AndroidDexInfoApi.java @@ -44,11 +44,13 @@ public interface AndroidDexInfoApi extends StructApi { structField = true) FileT getDeployJar(); + @Nullable @StarlarkMethod( name = "final_classes_dex_zip", doc = "The zip file containing the final dex classes.", documented = false, - structField = true) + structField = true, + allowReturnNones = true) FileT getFinalClassesDexZip(); @Nullable @@ -94,6 +96,7 @@ interface Provider extends ProviderApi { name = "final_classes_dex_zip", allowedTypes = { @ParamType(type = FileApi.class), + @ParamType(type = NoneType.class), }, named = true, doc = "The zip file containing the final dex classes."), @@ -120,7 +123,7 @@ interface Provider extends ProviderApi { @StarlarkConstructor AndroidDexInfoApi createInfo( FileT deployJar, - FileT finalClassesDexZip, + Object finalClassesDexZip, Object finalProguardOutputMap, Object javaResourceJar) throws EvalException;