aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-06-29 11:18:05 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-29 11:19:45 -0700
commit6645e9134611f3d96a664f017df3fffba3b3f63d (patch)
treec9287439c508c10878f39041676d23949a502737 /src/main/java/com
parentf9d3613b3ec36faabbd3b4bbd2f2f6d025643127 (diff)
Add basic android classes to fakebuildapi
RELNOTES: None. PiperOrigin-RevId: 202677272
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/BUILD2
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/BUILD3
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/SkydocMain.java14
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD26
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidDeviceBrokerInfo.java54
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidInstrumentationInfo.java66
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidNativeLibsInfo.java63
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java61
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidSkylarkCommon.java42
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidSplitTransitition.java27
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeApkInfo.java60
11 files changed, 417 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/BUILD b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/BUILD
index 6829345752..48c31e6750 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/BUILD
@@ -6,7 +6,7 @@
# those which contain pure-Skylark concepts, such as the interpreter or
# annotation interfaces).
-package(default_visibility = ["//src/main/java/com/google/devtools/build/lib:__pkg__"])
+package(default_visibility = ["//src:__subpackages__"])
licenses(["notice"]) # Apache 2.0
diff --git a/src/main/java/com/google/devtools/build/skydoc/BUILD b/src/main/java/com/google/devtools/build/skydoc/BUILD
index ebe5f89918..7edf2a3109 100644
--- a/src/main/java/com/google/devtools/build/skydoc/BUILD
+++ b/src/main/java/com/google/devtools/build/skydoc/BUILD
@@ -16,6 +16,7 @@ filegroup(
name = "srcs",
srcs = glob(["**"]) + [
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi:srcs",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android:srcs",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple:srcs",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config:srcs",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform:srcs",
@@ -40,6 +41,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib:events",
"//src/main/java/com/google/devtools/build/lib:syntax",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform",
@@ -47,6 +49,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test",
"//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform",
diff --git a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
index a6d45847f0..8ce319d1d8 100644
--- a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
+++ b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
@@ -19,6 +19,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.skylarkbuildapi.TopLevelBootstrap;
+import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidBootstrap;
import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleBootstrap;
import com.google.devtools.build.lib.skylarkbuildapi.config.ConfigBootstrap;
import com.google.devtools.build.lib.skylarkbuildapi.platform.PlatformBootstrap;
@@ -44,6 +45,12 @@ import com.google.devtools.build.skydoc.fakebuildapi.FakeSkylarkCommandLineApi;
import com.google.devtools.build.skydoc.fakebuildapi.FakeSkylarkNativeModuleApi;
import com.google.devtools.build.skydoc.fakebuildapi.FakeSkylarkRuleFunctionsApi;
import com.google.devtools.build.skydoc.fakebuildapi.FakeStructApi.FakeStructProviderApi;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidDeviceBrokerInfo.FakeAndroidDeviceBrokerInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidInstrumentationInfo.FakeAndroidInstrumentationInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidNativeLibsInfo.FakeAndroidNativeLibsInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidResourcesInfo.FakeAndroidResourcesInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidSkylarkCommon;
+import com.google.devtools.build.skydoc.fakebuildapi.android.FakeApkInfo.FakeApkInfoProvider;
import com.google.devtools.build.skydoc.fakebuildapi.apple.FakeAppleCommon;
import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigSkylarkCommon;
import com.google.devtools.build.skydoc.fakebuildapi.platform.FakePlatformCommon;
@@ -235,6 +242,12 @@ public class SkydocMain {
new FakeOutputGroupInfoProvider(),
new FakeActionsInfoProvider(),
new FakeDefaultInfoProvider());
+ AndroidBootstrap androidBootstrap = new AndroidBootstrap(new FakeAndroidSkylarkCommon(),
+ new FakeApkInfoProvider(),
+ new FakeAndroidInstrumentationInfoProvider(),
+ new FakeAndroidDeviceBrokerInfoProvider(),
+ new FakeAndroidResourcesInfoProvider(),
+ new FakeAndroidNativeLibsInfoProvider());
AppleBootstrap appleBootstrap = new AppleBootstrap(new FakeAppleCommon());
ConfigBootstrap configBootstrap = new ConfigBootstrap(new FakeConfigSkylarkCommon());
PlatformBootstrap platformBootstrap = new PlatformBootstrap(new FakePlatformCommon());
@@ -246,6 +259,7 @@ public class SkydocMain {
Runtime.addConstantsToBuilder(envBuilder);
MethodLibrary.addBindingsToBuilder(envBuilder);
topLevelBootstrap.addBindingsToBuilder(envBuilder);
+ androidBootstrap.addBindingsToBuilder(envBuilder);
appleBootstrap.addBindingsToBuilder(envBuilder);
configBootstrap.addBindingsToBuilder(envBuilder);
platformBootstrap.addBindingsToBuilder(envBuilder);
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD
new file mode 100644
index 0000000000..da88053956
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD
@@ -0,0 +1,26 @@
+package(
+ default_visibility = ["//src:__subpackages__"],
+)
+
+licenses(["notice"]) # Apache 2.0
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+)
+
+java_library(
+ name = "android",
+ srcs = glob(["*.java"]),
+ deps = [
+ "//src/main/java/com/google/devtools/build/lib:events",
+ "//src/main/java/com/google/devtools/build/lib:skylarkinterface",
+ "//src/main/java/com/google/devtools/build/lib:syntax",
+ "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android",
+ "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
+ "//third_party:guava",
+ "//third_party:jsr305",
+ ],
+)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidDeviceBrokerInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidDeviceBrokerInfo.java
new file mode 100644
index 0000000000..ef98b4ae3d
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidDeviceBrokerInfo.java
@@ -0,0 +1,54 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.skydoc.fakebuildapi.android;
+
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidDeviceBrokerInfoApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.EvalException;
+
+/**
+ * Fake implementation of {@link AndroidDeviceBrokerInfoApi}.
+ */
+public class FakeAndroidDeviceBrokerInfo implements AndroidDeviceBrokerInfoApi {
+
+ @Override
+ public String toProto(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public String toJson(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+
+ /**
+ * Fake implementation of {@link AndroidDeviceBrokerInfoApiProvider}.
+ */
+ public static class FakeAndroidDeviceBrokerInfoProvider
+ implements AndroidDeviceBrokerInfoApiProvider {
+
+ @Override
+ public AndroidDeviceBrokerInfoApi createInfo(String type) throws EvalException {
+ return new FakeAndroidDeviceBrokerInfo();
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidInstrumentationInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidInstrumentationInfo.java
new file mode 100644
index 0000000000..3dc9837167
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidInstrumentationInfo.java
@@ -0,0 +1,66 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.skydoc.fakebuildapi.android;
+
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidInstrumentationInfoApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.EvalException;
+
+/**
+ * Fake implementation of {@link AndroidInstrumentationInfoApi}.
+ */
+public class FakeAndroidInstrumentationInfo implements AndroidInstrumentationInfoApi<FileApi> {
+
+ @Override
+ public FileApi getTargetApk() {
+ return null;
+ }
+
+ @Override
+ public FileApi getInstrumentationApk() {
+ return null;
+ }
+
+ @Override
+ public String toProto(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public String toJson(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+
+ /**
+ * Fake implementation of {@link AndroidInstrumentationInfoApiProvider}.
+ */
+ public static class FakeAndroidInstrumentationInfoProvider
+ implements AndroidInstrumentationInfoApiProvider<FileApi> {
+
+ @Override
+ public AndroidInstrumentationInfoApi<FileApi> createInfo(FileApi targetApk,
+ FileApi instrumentationApk) throws EvalException {
+ return new FakeAndroidInstrumentationInfo();
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidNativeLibsInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidNativeLibsInfo.java
new file mode 100644
index 0000000000..c93e0a4105
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidNativeLibsInfo.java
@@ -0,0 +1,63 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.skydoc.fakebuildapi.android;
+
+import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidNativeLibsInfoApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
+
+/**
+ * Fake implementation of {@link AndroidNativeLibsInfoApi}.
+ */
+public class FakeAndroidNativeLibsInfo implements AndroidNativeLibsInfoApi<FileApi> {
+
+ @Override
+ public NestedSet<FileApi> getNativeLibs() {
+ return null;
+ }
+
+ @Override
+ public String toProto(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public String toJson(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+
+ /**
+ * Fake implementation of {@link AndroidNativeLibsInfoApiProvider}.
+ */
+ public static class FakeAndroidNativeLibsInfoProvider
+ implements AndroidNativeLibsInfoApiProvider {
+
+ @Override
+ public AndroidNativeLibsInfoApi<?> createInfo(SkylarkNestedSet nativeLibs)
+ throws EvalException {
+ return new FakeAndroidNativeLibsInfo();
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java
new file mode 100644
index 0000000000..4de9a12369
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java
@@ -0,0 +1,61 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.skydoc.fakebuildapi.android;
+
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidResourcesInfoApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.SkylarkDict;
+
+/**
+ * Fake implementation of {@link AndroidResourcesInfoApi}.
+ */
+public class FakeAndroidResourcesInfo implements AndroidResourcesInfoApi {
+
+ @Override
+ public FileApi getRTxt() {
+ return null;
+ }
+
+ @Override
+ public String toProto(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public String toJson(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+
+ /**
+ * Fake implementation of {@link AndroidResourcesInfoApiProvider}.
+ */
+ public static class FakeAndroidResourcesInfoProvider implements AndroidResourcesInfoApiProvider {
+
+ @Override
+ public AndroidResourcesInfoApi createInfo(SkylarkDict<?, ?> kwargs, Location loc)
+ throws EvalException {
+ return new FakeAndroidResourcesInfo();
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidSkylarkCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidSkylarkCommon.java
new file mode 100644
index 0000000000..6dcadfdc10
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidSkylarkCommon.java
@@ -0,0 +1,42 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.skydoc.fakebuildapi.android;
+
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidDeviceBrokerInfoApi;
+import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidSkylarkCommonApi;
+import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidSplitTransititionApi;
+import com.google.devtools.build.lib.vfs.PathFragment;
+
+/**
+ * Fake implementation of {@link AndroidSkylarkCommonApi}.
+ */
+public class FakeAndroidSkylarkCommon implements AndroidSkylarkCommonApi<FileApi> {
+
+ @Override
+ public AndroidDeviceBrokerInfoApi createDeviceBrokerInfo(String deviceBrokerType) {
+ return new FakeAndroidDeviceBrokerInfo();
+ }
+
+ @Override
+ public PathFragment getSourceDirectoryRelativePathFromResource(FileApi resource) {
+ return null;
+ }
+
+ @Override
+ public AndroidSplitTransititionApi getAndroidSplitTransition() {
+ return null;
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidSplitTransitition.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidSplitTransitition.java
new file mode 100644
index 0000000000..749f9b8c2c
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidSplitTransitition.java
@@ -0,0 +1,27 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.skydoc.fakebuildapi.android;
+
+import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidSplitTransititionApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+
+/**
+ * Fake implementation of {@link AndroidSplitTransititionApi}.
+ */
+public class FakeAndroidSplitTransitition implements AndroidSplitTransititionApi {
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeApkInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeApkInfo.java
new file mode 100644
index 0000000000..3aceccec96
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeApkInfo.java
@@ -0,0 +1,60 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.skydoc.fakebuildapi.android;
+
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.android.ApkInfoApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.SkylarkDict;
+
+/**
+ * Fake implementation of {@link ApkInfoApi}.
+ */
+public class FakeApkInfo implements ApkInfoApi<FileApi> {
+
+ @Override
+ public FileApi getApk() {
+ return null;
+ }
+
+ @Override
+ public String toProto(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public String toJson(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+
+ /**
+ * Fake implementation of {@link ApkInfoApiProvider}.
+ */
+ public static class FakeApkInfoProvider implements ApkInfoApiProvider {
+
+ @Override
+ public ApkInfoApi<?> createInfo(SkylarkDict<?, ?> kwargs, Location loc) throws EvalException {
+ return new FakeApkInfo();
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+ }
+}