| // Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| package com.android.tools.r8; |
| |
| import com.android.tools.r8.keepanno.annotations.KeepForApi; |
| import java.io.InputStream; |
| |
| /** |
| * Base interface for android resources (resource table, manifest, res folder files) |
| * |
| * <p>Android resources are provided to R8 to allow for combined code and resource shrinking. This |
| * allows us to reason about resources, and transitively other resources and code throughout the |
| * entire compilation pipeline. |
| */ |
| @KeepForApi |
| public interface AndroidResourceInput extends Resource { |
| |
| @KeepForApi |
| enum Kind { |
| // The AndroidManifest.xml file in proto format. |
| MANIFEST, |
| // The resource table, in proto format. |
| RESOURCE_TABLE, |
| // An xml file within the res folder, in proto format if not inside res/raw. |
| XML_FILE, |
| // Any other binary file withing the res folder. |
| RES_FOLDER_FILE, |
| // A xml file in text format which should be parsed for keep/discard rules. The files is not |
| // required to include rules. The files will NOT be copied to the output provider. |
| KEEP_RULE_FILE, |
| // Other files are ignored, but copied through |
| UNKNOWN |
| } |
| |
| // The path, within the app, of the resource. |
| ResourcePath getPath(); |
| |
| Kind getKind(); |
| |
| InputStream getByteStream() throws ResourceException; |
| } |