Add api-database as implementation dependency and use it for building
This only ensure that we can compile and do not yet look at references
and prevent inlining of existing calls.
Bug: 190368382
Bug: 188388130
Change-Id: Icee3110c630fc7089cc2203ab3a295d85b515256
diff --git a/build.gradle b/build.gradle
index 273e192..f69b505 100644
--- a/build.gradle
+++ b/build.gradle
@@ -11,13 +11,6 @@
import tasks.DownloadDependency
import tasks.GetJarsFromConfiguration
import utils.Utils
-import org.gradle.api.tasks.testing.logging.TestExceptionFormat
-import org.gradle.api.tasks.testing.logging.TestLogEvent
-import org.gradle.api.tasks.testing.TestOutputEvent
-
-import java.nio.charset.StandardCharsets
-import java.nio.file.Files
-import java.nio.file.StandardOpenOption
buildscript {
repositories {
@@ -255,6 +248,7 @@
implementation group: 'org.ow2.asm', name: 'asm-tree', version: asmVersion
implementation group: 'org.ow2.asm', name: 'asm-analysis', version: asmVersion
implementation group: 'org.ow2.asm', name: 'asm-util', version: asmVersion
+ implementation files('third_party/android_jar/api-database/api-database.jar')
jdk11TimeTestsCompile group: 'org.testng', name: 'testng', version: testngVersion
examplesTestNGRunnerCompile group: 'org.testng', name: 'testng', version: testngVersion
testCompile sourceSets.examples.output
diff --git a/src/test/java/com/android/tools/r8/apimodel/AndroidApiDatabaseBuilderGeneratorTest.java b/src/test/java/com/android/tools/r8/apimodel/AndroidApiDatabaseBuilderGeneratorTest.java
index c69eff3..d85e3e5 100644
--- a/src/test/java/com/android/tools/r8/apimodel/AndroidApiDatabaseBuilderGeneratorTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/AndroidApiDatabaseBuilderGeneratorTest.java
@@ -27,6 +27,7 @@
import com.android.tools.r8.utils.ListUtils;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.TraversalContinuation;
+import com.android.tools.r8.utils.ZipUtils;
import com.android.tools.r8.utils.ZipUtils.ZipBuilder;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.google.common.collect.ImmutableList;
@@ -202,10 +203,11 @@
descriptor(AndroidApiDatabaseBuilderTemplate.class),
generatedMainDescriptor())
.transform())
- .addLibraryFiles(generated)
- // TODO(b/190368382): This will change when databasebuilder is included in deps.
- .addLibraryFiles(ToolHelper.R8_WITHOUT_DEPS_JAR, ToolHelper.DEPS)
- .addLibraryFiles(ToolHelper.getJava8RuntimeJar())
+ .addLibraryFiles(
+ generated,
+ ToolHelper.R8_WITHOUT_DEPS_JAR,
+ getDepsWithoutGeneratedApiModelClasses(),
+ ToolHelper.getJava8RuntimeJar())
.run(TestRuntime.getSystemRuntime(), testClass)
.apply(
result -> {
@@ -218,6 +220,22 @@
}
}
+ private static Path getDepsWithoutGeneratedApiModelClasses() throws IOException {
+ Path tempDeps = Files.createTempDirectory("temp_deps");
+ ZipUtils.unzip(
+ ToolHelper.DEPS.toString(),
+ tempDeps.toFile(),
+ entry -> {
+ if (entry.getName().startsWith("com/android/tools/r8/apimodel/")) {
+ return false;
+ }
+ return true;
+ });
+ Path modifiedDeps = Files.createTempFile("modified_deps", ".jar");
+ ZipUtils.zip(modifiedDeps, tempDeps);
+ return modifiedDeps;
+ }
+
private static String getExpected(List<ParsedApiClass> parsedApiClasses, boolean abort) {
List<String> expected = new ArrayList<>();
parsedApiClasses.forEach(