Don't generate or require removed.txt file, fix initial API generation
Removes all existing removed.txt files. Fixes API generation for
annotations project. Fixes the build.
Test: ./gradlew updateApi
Change-Id: Idf8320c5bd5bfe71bc6302af77513c9947b49a70
diff --git a/annotations/api/27.0.0-SNAPSHOT.txt b/annotations/api/27.0.0-SNAPSHOT.txt
new file mode 100644
index 0000000..c52f7e1
--- /dev/null
+++ b/annotations/api/27.0.0-SNAPSHOT.txt
@@ -0,0 +1,171 @@
+package android.support.annotation {
+
+ public abstract class AnimRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class AnimatorRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class AnyRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class AnyThread implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class ArrayRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class AttrRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class BinderThread implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class BoolRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class CallSuper implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class CheckResult implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class ColorInt implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class ColorLong implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class ColorRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class DimenRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class Dimension implements java.lang.annotation.Annotation {
+ field public static final int DP = 0; // 0x0
+ field public static final int PX = 1; // 0x1
+ field public static final int SP = 2; // 0x2
+ }
+
+ public abstract class DrawableRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class FloatRange implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class FontRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class FractionRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class GuardedBy implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class HalfFloat implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class IdRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class IntDef implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class IntRange implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class IntegerRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class InterpolatorRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class Keep implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class LayoutRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class MainThread implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class MenuRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class NonNull implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class Nullable implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class PluralsRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class Px implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class RawRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class RequiresApi implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class RequiresPermission implements java.lang.annotation.Annotation {
+ }
+
+ public static abstract class RequiresPermission.Read implements java.lang.annotation.Annotation {
+ }
+
+ public static abstract class RequiresPermission.Write implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class RestrictTo implements java.lang.annotation.Annotation {
+ }
+
+ public static final class RestrictTo.Scope extends java.lang.Enum {
+ method public static android.support.annotation.RestrictTo.Scope valueOf(java.lang.String);
+ method public static final android.support.annotation.RestrictTo.Scope[] values();
+ enum_constant public static final deprecated android.support.annotation.RestrictTo.Scope GROUP_ID;
+ enum_constant public static final android.support.annotation.RestrictTo.Scope LIBRARY;
+ enum_constant public static final android.support.annotation.RestrictTo.Scope LIBRARY_GROUP;
+ enum_constant public static final android.support.annotation.RestrictTo.Scope SUBCLASSES;
+ enum_constant public static final android.support.annotation.RestrictTo.Scope TESTS;
+ }
+
+ public abstract class Size implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class StringDef implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class StringRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class StyleRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class StyleableRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class TransitionRes implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class UiThread implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class VisibleForTesting implements java.lang.annotation.Annotation {
+ field public static final int NONE = 5; // 0x5
+ field public static final int PACKAGE_PRIVATE = 3; // 0x3
+ field public static final int PRIVATE = 2; // 0x2
+ field public static final int PROTECTED = 4; // 0x4
+ }
+
+ public abstract class WorkerThread implements java.lang.annotation.Annotation {
+ }
+
+ public abstract class XmlRes implements java.lang.annotation.Annotation {
+ }
+
+}
+
diff --git a/annotations/build.gradle b/annotations/build.gradle
index 195a0e7..b8a14b7 100644
--- a/annotations/build.gradle
+++ b/annotations/build.gradle
@@ -64,7 +64,9 @@
// Disable strict javadoc lint checks with javadoc v8 builds on Mac. http://b/26744780
if (JavaVersion.current().isJava8Compatible()) {
tasks.withType(Javadoc) {
- options.addBooleanOption('Xdoclint:none', true)
+ if (options.doclet == null) {
+ options.addBooleanOption('Xdoclint:none', true)
+ }
}
}
diff --git a/api/removed.txt b/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/api/removed.txt
+++ /dev/null
diff --git a/buildSrc/diff_and_docs.gradle b/buildSrc/diff_and_docs.gradle
index 6a28869..f5dd5dc 100644
--- a/buildSrc/diff_and_docs.gradle
+++ b/buildSrc/diff_and_docs.gradle
@@ -226,27 +226,25 @@
newApiFile = newApi
oldApiFile = oldApi
- newRemovedApiFile = new File(project.docsDir, 'release/' + project.name + '/removed.txt')
- oldRemovedApiFile = new File(project.projectDir, 'api/' + project.name + '/removed.txt')
whitelistErrorsFile = whitelist
doFirst {
- logger.lifecycle "Verifying ${newApi.name} against ${oldApi.name}..."
+ logger.lifecycle "Verifying ${newApi.name} against ${oldApi ? oldApi.name : "nothing"}..."
}
}
}
DoclavaTask createGenerateApiTask(Project project) {
// Generates API files
- return project.tasks.create(name: "generateApi", type: DoclavaTask.class, dependsOn: configurations.doclava) {
+ return project.tasks.create(name: "generateApi", type: DoclavaTask.class,
+ dependsOn: configurations.doclava) {
docletpath = configurations.doclava.resolve()
destinationDir = project.docsDir
// Base classpath is Android SDK, sub-projects add their own.
classpath = rootProject.ext.androidJar
apiFile = new File(project.docsDir, 'release/' + project.name + '/current.txt')
- removedApiFile = new File(project.docsDir, 'release/' + project.name + '/removed.txt')
generateDocs = false
options {
@@ -307,17 +305,18 @@
def version = new Version(project.version)
def workingDir = project.projectDir
- def generateApi = createGenerateApiTask(project)
+ DoclavaTask generateApi = createGenerateApiTask(project)
createVerifyUpdateApiAllowedTask(project)
// Make sure the API surface has not broken since the last release.
def previousApiFile = version.isPatch() ? getApiFile(workingDir, project.version)
: getPreviousApiFile(workingDir, project.version)
- def whitelistFile = new File(
+ def whitelistFile = previousApiFile == null ? null : new File(
previousApiFile.parentFile, stripExtension(previousApiFile.name) + ".ignore")
- def checkApiRelease = createCheckApiTask(project, "checkApiRelease", CHECK_API_CONFIG_RELEASE,
- previousApiFile, generateApi.apiFile, whitelistFile).dependsOn(generateApi)
+ def checkApiRelease = createCheckApiTask(project, "checkApiRelease",
+ CHECK_API_CONFIG_RELEASE, previousApiFile, generateApi.apiFile, whitelistFile)
+ .dependsOn(generateApi)
// Allow a comma-delimited list of whitelisted errors.
if (project.hasProperty("ignore")) {
@@ -341,15 +340,13 @@
// Track API change history.
def apiFilePattern = /(\d+\.\d+\.\d).txt/
File apiDir = new File(project.projectDir, 'api')
- File lastApiFile;
apiDir.eachFileMatch FileType.FILES, ~apiFilePattern, { File apiFile ->
def apiLevel = (apiFile.name =~ apiFilePattern)[0][1]
rootProject.generateDocs.sinces.add([apiFile.absolutePath, apiLevel])
- lastApiFile = apiFile
}
- // Associate latest API surface with the Maven artifact.
- rootProject.generateDocs.artifacts.add([lastApiFile.absolutePath, artifact])
+ // Associate current API surface with the Maven artifact.
+ rootProject.generateDocs.artifacts.add([generateApi.apiFile.absolutePath, artifact])
rootProject.createArchive.dependsOn checkApi
}
@@ -383,8 +380,6 @@
description 'Updates the candidate API file to incorporate valid changes.'
newApiFile = project.checkApiRelease.newApiFile
oldApiFile = getApiFile(project.projectDir, project.version)
- newRemovedApiFile = project.checkApiRelease.newRemovedApiFile
- oldRemovedApiFile = new File(project.projectDir, 'api/removed.txt')
whitelistErrors = project.checkApiRelease.whitelistErrors
whitelistErrorsFile = project.checkApiRelease.whitelistErrorsFile
}
diff --git a/buildSrc/src/main/groovy/android/support/checkapi/CheckApiTask.groovy b/buildSrc/src/main/groovy/android/support/checkapi/CheckApiTask.groovy
index 2aa9d21..05b4b1c 100644
--- a/buildSrc/src/main/groovy/android/support/checkapi/CheckApiTask.groovy
+++ b/buildSrc/src/main/groovy/android/support/checkapi/CheckApiTask.groovy
@@ -50,10 +50,12 @@
private static final String ANSI_YELLOW = "\u001B[33m";
/** API file that represents the existing API surface. */
+ @Optional
@InputFile
File oldApiFile
/** API file that represents the existing API surface's removals. */
+ @Optional
@InputFile
File oldRemovedApiFile
@@ -62,15 +64,14 @@
File newApiFile
/** API file that represents the candidate API surface's removals. */
+ @Optional
@InputFile
File newRemovedApiFile
/** Optional file containing a newline-delimited list of error SHAs to ignore. */
- @Nullable
File whitelistErrorsFile
@Optional
- @Nullable
@InputFile
File getWhiteListErrorsFileInput() {
// Gradle requires non-null InputFiles to exist -- even with Optional -- so work around that
@@ -87,9 +88,8 @@
* Packages names will be matched exactly; sub-packages are not automatically recognized.
*/
@Optional
- @Nullable
@Input
- Collection ignoredPackages = null
+ Collection ignoredPackages
/**
* Optional list of classes to ignore.
@@ -98,9 +98,8 @@
* automatically recognized.
*/
@Optional
- @Nullable
@Input
- Collection ignoredClasses = null
+ Collection ignoredClasses
/**
* Optional set of error SHAs to ignore.
@@ -117,8 +116,7 @@
// A dummy output file meant only to tag when this check was last ran.
// Without any outputs, Gradle will run this task every time.
@Optional
- @Nullable
- private File mOutputFile = null;
+ private File mOutputFile
@OutputFile
public File getOutputFile() {
@@ -164,17 +162,12 @@
}
private Set<File> collectAndVerifyInputs() {
- Set<File> apiFiles = [getOldApiFile(), getNewApiFile(), getOldRemovedApiFile(),
- getNewRemovedApiFile()] as Set
- if (apiFiles.size() != 4) {
- throw new InvalidUserDataException("""Conflicting input files:
- oldApiFile: ${getOldApiFile()}
- newApiFile: ${getNewApiFile()}
- oldRemovedApiFile: ${getOldRemovedApiFile()}
- newRemovedApiFile: ${getNewRemovedApiFile()}
-All of these must be distinct files.""")
+ if (getOldRemovedApiFile() != null && getNewRemovedApiFile() != null) {
+ return [getOldApiFile(), getNewApiFile(), getOldRemovedApiFile(),
+ getNewRemovedApiFile()] as Set
+ } else {
+ return [getOldApiFile(), getNewApiFile()] as Set
}
- return apiFiles;
}
public void setCheckApiErrors(Collection errors) {
@@ -194,6 +187,11 @@
@TaskAction
public void exec() {
+ if (getOldApiFile() == null) {
+ // Nothing to do.
+ return
+ }
+
final def apiFiles = collectAndVerifyInputs()
OutputStream errStream = new ByteArrayOutputStream()
@@ -207,8 +205,6 @@
minHeapSize = '128m'
maxHeapSize = '1024m'
- // [other options] old_api.txt new_api.txt old_removed_api.txt new_removed_api.txt
-
// add -error LEVEL for every error level we want to fail the build on.
getCheckApiErrors().each { args('-error', it) }
getCheckApiWarnings().each { args('-warning', it) }
diff --git a/buildSrc/src/main/groovy/android/support/doclava/DoclavaTask.groovy b/buildSrc/src/main/groovy/android/support/doclava/DoclavaTask.groovy
index 2b5ae71..651446f 100644
--- a/buildSrc/src/main/groovy/android/support/doclava/DoclavaTask.groovy
+++ b/buildSrc/src/main/groovy/android/support/doclava/DoclavaTask.groovy
@@ -14,17 +14,15 @@
* limitations under the License.
*/
-package android.support.doclava;
+package android.support.doclava
-import org.gradle.api.InvalidUserDataException
-import org.gradle.api.Nullable
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.javadoc.Javadoc
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.OutputFile
-import org.gradle.external.javadoc.JavadocOptionFileOption;
+import org.gradle.external.javadoc.JavadocOptionFileOption
public class DoclavaTask extends Javadoc {
@@ -64,9 +62,8 @@
* Packages names will be matched exactly; sub-packages are not automatically recognized.
*/
@Optional
- @Nullable
@Input
- Collection hiddenPackages = null
+ Collection hiddenPackages
/**
* If non-null and not-empty, the whitelist of packages that will be present in the generated
@@ -74,9 +71,8 @@
* Wildcards are accepted.
*/
@Optional
- @Nullable
@Input
- Set<String> stubPackages = null
+ Set<String> stubPackages
@Input
boolean generateDocs = true
@@ -86,34 +82,30 @@
* If this is non-null, then {@link #removedApiFile} must be non-null as well.
*/
@Optional
- @Nullable
@OutputFile
- File apiFile = null
+ File apiFile
/**
* If non-null, the location of where to place the generated removed api file.
* If this is non-null, then {@link #apiFile} must be non-null as well.
*/
@Optional
- @Nullable
@OutputFile
- File removedApiFile = null
+ File removedApiFile
/**
* If non-null, the location of the generated keep list.
*/
@Optional
- @Nullable
@OutputFile
- File keepListFile = null
+ File keepListFile
/**
* If non-null, the location to put the generated stub sources.
*/
@Optional
- @Nullable
@OutputDirectory
- File stubsDir = null
+ File stubsDir
public DoclavaTask() {
failOnError = true
@@ -123,10 +115,10 @@
// doclava doesn't understand '-doctitle'
title = null
maxMemory = "1280m"
- // TODO(csyoung) Some way to override this?
- // If none of generateDocs, apiFile, keepListFile, or stubJarsDir are true, then there is no work to do.
+ // If none of generateDocs, apiFile, keepListFile, or stubJarsDir are true, then there is
+ // no work to do.
onlyIf( { getGenerateDocs() ||
- (getApiFile() != null && getRemovedApiFile() != null) ||
+ getApiFile() != null ||
getKeepListFile() != null ||
getStubsDir() != null } )
}
@@ -167,18 +159,6 @@
doclavaHidden = hidden as int[]
}
- private static boolean verifyAndGetGenerateApiFiles(File apiFile, File removedApiFile) {
- if (apiFile == null) {
- if (removedApiFile == null) {
- return false
- } else {
- throw new InvalidUserDataException('removedApiFile specified but not apiFile')
- }
- } else {
- return true
- }
- }
-
/**
* "Configures" this DoclavaTask with parameters that might not be at their final values
* until this task is run.
@@ -188,31 +168,36 @@
// configure doclava error/warning/hide levels
JavadocOptionFileOption hide = options.addMultilineMultiValueOption("hide")
- hide.setValue(getDoclavaHidden().collect({[it.toString()]}))
+ hide.setValue(getDoclavaHidden().collect({ [it.toString()] }))
JavadocOptionFileOption warning = options.addMultilineMultiValueOption("warning")
- warning.setValue(getDoclavaWarnings().collect({[it.toString()]}))
+ warning.setValue(getDoclavaWarnings().collect({ [it.toString()] }))
JavadocOptionFileOption error = options.addMultilineMultiValueOption("error")
- error.setValue(getDoclavaErrors().collect({[it.toString()]}))
+ error.setValue(getDoclavaErrors().collect({ [it.toString()] }))
Collection hiddenPackages = getHiddenPackages()
if (hiddenPackages) {
JavadocOptionFileOption hidePackage =
options.addMultilineMultiValueOption("hidePackage")
- hidePackage.setValue(hiddenPackages.collect({[it.toString()]}))
+ hidePackage.setValue(hiddenPackages.collect({ [it.toString()] }))
}
if (!getGenerateDocs()) {
options.addOption(new DoclavaJavadocOptionFileOption('nodocs'))
}
- // If requested, generate the api files.
+
+ // If requested, generate the API files.
File apiFile = getApiFile()
- File removedApiFile = getRemovedApiFile()
- if (verifyAndGetGenerateApiFiles(apiFile, removedApiFile)) {
+ if (apiFile != null) {
options.addStringOption('api', apiFile.absolutePath)
- options.addStringOption('removedApi', removedApiFile.absolutePath)
+
+ File removedApiFile = getRemovedApiFile()
+ if (removedApiFile != null) {
+ options.addStringOption('removedApi', removedApiFile.absolutePath)
+ }
}
+
// If requested, generate the keep list.
File keepListFile = getKeepListFile()
if (keepListFile != null) {
@@ -233,7 +218,7 @@
@Override
public void generate() {
- configureDoclava();
- super.generate();
+ configureDoclava()
+ super.generate()
}
-}
\ No newline at end of file
+}
diff --git a/buildSrc/src/main/java/android/support/checkapi/UpdateApiTask.java b/buildSrc/src/main/java/android/support/checkapi/UpdateApiTask.java
index 55f118a..de2db91 100644
--- a/buildSrc/src/main/java/android/support/checkapi/UpdateApiTask.java
+++ b/buildSrc/src/main/java/android/support/checkapi/UpdateApiTask.java
@@ -19,7 +19,6 @@
import com.google.common.io.Files;
import org.gradle.api.DefaultTask;
-import org.gradle.api.Nullable;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputFile;
import org.gradle.api.tasks.Optional;
@@ -57,6 +56,7 @@
}
@InputFile
+ @Optional
public File getNewRemovedApiFile() {
return mNewRemovedApiFile;
}
@@ -85,6 +85,7 @@
}
@OutputFile
+ @Optional
public File getOldRemovedApiFile() {
return mOldRemovedApiFile;
}
@@ -95,7 +96,6 @@
@OutputFile
@Optional
- @Nullable
public File getWhitelistErrorsFile() {
return mWhitelistErrorsFile;
}
@@ -110,7 +110,14 @@
@TaskAction
public void doUpdate() throws Exception {
Files.copy(getNewApiFile(), getOldApiFile());
- Files.copy(getNewRemovedApiFile(), getOldRemovedApiFile());
+
+ if (getOldRemovedApiFile() != null) {
+ if (getNewRemovedApiFile() != null) {
+ Files.copy(getNewRemovedApiFile(), getOldRemovedApiFile());
+ } else {
+ getOldRemovedApiFile().delete();
+ }
+ }
if (mWhitelistErrorsFile != null && !mWhitelistErrors.isEmpty()) {
if (mWhitelistErrorsFile.exists()) {
diff --git a/compat/api/removed.txt b/compat/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/compat/api/removed.txt
+++ /dev/null
diff --git a/content/api/removed.txt b/content/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/content/api/removed.txt
+++ /dev/null
diff --git a/core-ui/api/removed.txt b/core-ui/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/core-ui/api/removed.txt
+++ /dev/null
diff --git a/core-utils/api/removed.txt b/core-utils/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/core-utils/api/removed.txt
+++ /dev/null
diff --git a/customtabs/api/removed.txt b/customtabs/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/customtabs/api/removed.txt
+++ /dev/null
diff --git a/design/api/removed.txt b/design/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/design/api/removed.txt
+++ /dev/null
diff --git a/dynamic-animation/api/removed.txt b/dynamic-animation/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/dynamic-animation/api/removed.txt
+++ /dev/null
diff --git a/emoji/appcompat/api/removed.txt b/emoji/appcompat/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/emoji/appcompat/api/removed.txt
+++ /dev/null
diff --git a/emoji/bundled/api/removed.txt b/emoji/bundled/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/emoji/bundled/api/removed.txt
+++ /dev/null
diff --git a/emoji/core/api/removed.txt b/emoji/core/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/emoji/core/api/removed.txt
+++ /dev/null
diff --git a/exifinterface/api/removed.txt b/exifinterface/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/exifinterface/api/removed.txt
+++ /dev/null
diff --git a/fragment/api/removed.txt b/fragment/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/fragment/api/removed.txt
+++ /dev/null
diff --git a/graphics/drawable/animated/api/removed.txt b/graphics/drawable/animated/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/graphics/drawable/animated/api/removed.txt
+++ /dev/null
diff --git a/graphics/drawable/static/api/removed.txt b/graphics/drawable/static/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/graphics/drawable/static/api/removed.txt
+++ /dev/null
diff --git a/lifecycle/common/api/removed.txt b/lifecycle/common/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/lifecycle/common/api/removed.txt
+++ /dev/null
diff --git a/lifecycle/runtime/api/removed.txt b/lifecycle/runtime/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/lifecycle/runtime/api/removed.txt
+++ /dev/null
diff --git a/media-compat/api/removed.txt b/media-compat/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/media-compat/api/removed.txt
+++ /dev/null
diff --git a/percent/api/removed.txt b/percent/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/percent/api/removed.txt
+++ /dev/null
diff --git a/recommendation/api/removed.txt b/recommendation/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/recommendation/api/removed.txt
+++ /dev/null
diff --git a/transition/api/removed.txt b/transition/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/transition/api/removed.txt
+++ /dev/null
diff --git a/tv-provider/api/removed.txt b/tv-provider/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/tv-provider/api/removed.txt
+++ /dev/null
diff --git a/v13/api/removed.txt b/v13/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v13/api/removed.txt
+++ /dev/null
diff --git a/v14/preference/api/removed.txt b/v14/preference/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v14/preference/api/removed.txt
+++ /dev/null
diff --git a/v17/leanback/api/removed.txt b/v17/leanback/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v17/leanback/api/removed.txt
+++ /dev/null
diff --git a/v17/preference-leanback/api/removed.txt b/v17/preference-leanback/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v17/preference-leanback/api/removed.txt
+++ /dev/null
diff --git a/v7/appcompat/api/removed.txt b/v7/appcompat/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v7/appcompat/api/removed.txt
+++ /dev/null
diff --git a/v7/cardview/api/removed.txt b/v7/cardview/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v7/cardview/api/removed.txt
+++ /dev/null
diff --git a/v7/gridlayout/api/removed.txt b/v7/gridlayout/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v7/gridlayout/api/removed.txt
+++ /dev/null
diff --git a/v7/mediarouter/api/removed.txt b/v7/mediarouter/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v7/mediarouter/api/removed.txt
+++ /dev/null
diff --git a/v7/palette/api/removed.txt b/v7/palette/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v7/palette/api/removed.txt
+++ /dev/null
diff --git a/v7/preference/api/removed.txt b/v7/preference/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v7/preference/api/removed.txt
+++ /dev/null
diff --git a/v7/recyclerview/api/removed.txt b/v7/recyclerview/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/v7/recyclerview/api/removed.txt
+++ /dev/null
diff --git a/wear/api/removed.txt b/wear/api/removed.txt
deleted file mode 100644
index e69de29..0000000
--- a/wear/api/removed.txt
+++ /dev/null