Move ProtoLayout protos into their own library

The wrappers in the ProtoLayout library will be updated in a future
CL.

Bug: 257462120
Change-Id: Iab40fbb57bac59172bf1dfe3e5be991a0d2620a9
diff --git a/wear/protolayout/protolayout-proto/build.gradle b/wear/protolayout/protolayout-proto/build.gradle
index 42da9e5..8600bd5 100644
--- a/wear/protolayout/protolayout-proto/build.gradle
+++ b/wear/protolayout/protolayout-proto/build.gradle
@@ -13,17 +13,75 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 import androidx.build.LibraryType
-
+import androidx.build.RunApiTasks
 plugins {
     id("AndroidXPlugin")
     id("java-library")
+    id("com.google.protobuf")
+    id("com.github.johnrengelman.shadow")
+}
+configurations {
+    shadowed
+    compileOnly.extendsFrom(shadowed)
+    testCompile.extendsFrom(shadowed)
+}
+dependencies {
+    implementation("androidx.annotation:annotation:1.1.0")
+    shadowed(libs.protobufLite)
 }
 
-dependencies {
-    annotationProcessor(libs.nullaway)
-    implementation("androidx.annotation:annotation:1.1.0")
+// HACK: Move standard JAR to have another suffix and build a shadowJar with
+// no classifier (so it's picked up as the primary artifact).
+jar {
+    archiveClassifier = 'before-shadow'
+}
+
+shadowJar {
+    archiveClassifier = ''
+    configurations = [project.configurations.shadowed]
+
+    relocate "com.google.protobuf", "androidx.wear.protolayout.protobuf"
+    exclude("**/*.proto")
+}
+
+configurations {
+    apiElements.outgoing.artifacts.clear()
+    apiElements.outgoing.artifact(shadowJar) {
+        builtBy shadowJar
+    }
+    runtimeElements.outgoing.artifacts.clear()
+    runtimeElements.outgoing.artifact(shadowJar) {
+        builtBy shadowJar
+    }
+}
+
+protobuf {
+    protoc {
+        artifact = libs.protobufCompiler.get()
+    }
+
+    generateProtoTasks {
+        ofSourceSet("main").each { task ->
+            sourceSets.main.java.srcDir(task)
+        }
+        all().each { task ->
+            task.builtins {
+                java {
+                    option 'lite'
+                }
+            }
+        }
+    }
+}
+
+afterEvaluate {
+    lint {
+        lintOptions {
+            // protobuf generates unannotated and synthetic accessor methods
+            disable("UnknownNullness", "SyntheticAccessor")
+        }
+    }
 }
 
 androidx {
@@ -32,4 +90,6 @@
     mavenGroup = LibraryGroups.WEAR_PROTOLAYOUT
     inceptionYear = "2022"
     description = "Jarjar the generated proto and proto-lite dependency for use by wear-protolayout"
+    runApiTasks = new RunApiTasks.No("Metalava doesn't properly parse the proto sources " +
+            "(b/180579063)")
 }
diff --git a/wear/tiles/tiles-proto/src/main/proto/action.proto b/wear/protolayout/protolayout-proto/src/main/proto/action.proto
similarity index 95%
rename from wear/tiles/tiles-proto/src/main/proto/action.proto
rename to wear/protolayout/protolayout-proto/src/main/proto/action.proto
index 454a83c..9406086 100644
--- a/wear/tiles/tiles-proto/src/main/proto/action.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/action.proto
@@ -1,11 +1,11 @@
 // Actions that can be performed when a user interacts with layout elements.
 syntax = "proto3";
 
-package androidx.wear.tiles.proto;
+package androidx.wear.protolayout.proto;
 
 import "state.proto";
 
-option java_package = "androidx.wear.tiles.proto";
+option java_package = "androidx.wear.protolayout.proto";
 option java_outer_classname = "ActionProto";
 
 // A string value that can be added to an Android intent's extras.
diff --git a/wear/tiles/tiles-proto/src/main/proto/color.proto b/wear/protolayout/protolayout-proto/src/main/proto/color.proto
similarity index 68%
rename from wear/tiles/tiles-proto/src/main/proto/color.proto
rename to wear/protolayout/protolayout-proto/src/main/proto/color.proto
index c4c1463..f719a06 100644
--- a/wear/tiles/tiles-proto/src/main/proto/color.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/color.proto
@@ -1,9 +1,9 @@
 // Color utilities for layout elements.
 syntax = "proto3";
 
-package androidx.wear.tiles.proto;
+package androidx.wear.protolayout.proto;
 
-option java_package = "androidx.wear.tiles.proto";
+option java_package = "androidx.wear.protolayout.proto";
 option java_outer_classname = "ColorProto";
 
 // A property defining a color.
diff --git a/wear/tiles/tiles-proto/src/main/proto/device_parameters.proto b/wear/protolayout/protolayout-proto/src/main/proto/device_parameters.proto
similarity index 92%
rename from wear/tiles/tiles-proto/src/main/proto/device_parameters.proto
rename to wear/protolayout/protolayout-proto/src/main/proto/device_parameters.proto
index 65308f2..e7a5e2a 100644
--- a/wear/tiles/tiles-proto/src/main/proto/device_parameters.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/device_parameters.proto
@@ -1,9 +1,9 @@
 // Request messages used to fetch tiles and resources
 syntax = "proto3";
 
-package androidx.wear.tiles.proto;
+package androidx.wear.protolayout.proto;
 
-option java_package = "androidx.wear.tiles.proto";
+option java_package = "androidx.wear.protolayout.proto";
 option java_outer_classname = "DeviceParametersProto";
 
 // The platform of the device requesting a tile.
diff --git a/wear/tiles/tiles-proto/src/main/proto/dimension.proto b/wear/protolayout/protolayout-proto/src/main/proto/dimension.proto
similarity index 95%
rename from wear/tiles/tiles-proto/src/main/proto/dimension.proto
rename to wear/protolayout/protolayout-proto/src/main/proto/dimension.proto
index a9ff32b..a0a9989 100644
--- a/wear/tiles/tiles-proto/src/main/proto/dimension.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/dimension.proto
@@ -1,9 +1,9 @@
 // Dimensions for layout elements.
 syntax = "proto3";
 
-package androidx.wear.tiles.proto;
+package androidx.wear.protolayout.proto;
 
-option java_package = "androidx.wear.tiles.proto";
+option java_package = "androidx.wear.protolayout.proto";
 option java_outer_classname = "DimensionProto";
 
 // A type for linear dimensions, measured in dp.
diff --git a/wear/tiles/tiles-proto/src/main/proto/layout.proto b/wear/protolayout/protolayout-proto/src/main/proto/layout.proto
similarity index 99%
rename from wear/tiles/tiles-proto/src/main/proto/layout.proto
rename to wear/protolayout/protolayout-proto/src/main/proto/layout.proto
index f5454bf..bd896ba 100644
--- a/wear/tiles/tiles-proto/src/main/proto/layout.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/layout.proto
@@ -2,14 +2,14 @@
 // UI layouts.
 syntax = "proto3";
 
-package androidx.wear.tiles.proto;
+package androidx.wear.protolayout.proto;
 
 import "color.proto";
 import "dimension.proto";
 import "modifiers.proto";
 import "types.proto";
 
-option java_package = "androidx.wear.tiles.proto";
+option java_package = "androidx.wear.protolayout.proto";
 option java_outer_classname = "LayoutElementProto";
 
 // The horizontal alignment of an element within its container.
diff --git a/wear/tiles/tiles-proto/src/main/proto/modifiers.proto b/wear/protolayout/protolayout-proto/src/main/proto/modifiers.proto
similarity index 97%
rename from wear/tiles/tiles-proto/src/main/proto/modifiers.proto
rename to wear/protolayout/protolayout-proto/src/main/proto/modifiers.proto
index a62f00f..4aa04db 100644
--- a/wear/tiles/tiles-proto/src/main/proto/modifiers.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/modifiers.proto
@@ -1,14 +1,14 @@
 // Modifiers for composable layout elements.
 syntax = "proto3";
 
-package androidx.wear.tiles.proto;
+package androidx.wear.protolayout.proto;
 
 import "action.proto";
 import "color.proto";
 import "dimension.proto";
 import "types.proto";
 
-option java_package = "androidx.wear.tiles.proto";
+option java_package = "androidx.wear.protolayout.proto";
 option java_outer_classname = "ModifiersProto";
 
 // A modifier for an element which can have associated Actions for click events.
diff --git a/wear/tiles/tiles-proto/src/main/proto/resources.proto b/wear/protolayout/protolayout-proto/src/main/proto/resources.proto
similarity index 96%
rename from wear/tiles/tiles-proto/src/main/proto/resources.proto
rename to wear/protolayout/protolayout-proto/src/main/proto/resources.proto
index eb4d8af..f14a6a21 100644
--- a/wear/tiles/tiles-proto/src/main/proto/resources.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/resources.proto
@@ -1,9 +1,9 @@
 // The resources for a layout.
 syntax = "proto3";
 
-package androidx.wear.tiles.proto;
+package androidx.wear.protolayout.proto;
 
-option java_package = "androidx.wear.tiles.proto";
+option java_package = "androidx.wear.protolayout.proto";
 option java_outer_classname = "ResourceProto";
 
 // Format describing the contents of an image data byte array.
diff --git a/wear/tiles/tiles-proto/src/main/proto/state.proto b/wear/protolayout/protolayout-proto/src/main/proto/state.proto
similarity index 68%
rename from wear/tiles/tiles-proto/src/main/proto/state.proto
rename to wear/protolayout/protolayout-proto/src/main/proto/state.proto
index 749d051..64d63468 100644
--- a/wear/tiles/tiles-proto/src/main/proto/state.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/state.proto
@@ -1,9 +1,9 @@
 // State of a tile.
 syntax = "proto3";
 
-package androidx.wear.tiles.proto;
+package androidx.wear.protolayout.proto;
 
-option java_package = "androidx.wear.tiles.proto";
+option java_package = "androidx.wear.protolayout.proto";
 option java_outer_classname = "StateProto";
 
 // State information.
diff --git a/wear/tiles/tiles-proto/src/main/proto/timeline.proto b/wear/protolayout/protolayout-proto/src/main/proto/timeline.proto
similarity index 93%
rename from wear/tiles/tiles-proto/src/main/proto/timeline.proto
rename to wear/protolayout/protolayout-proto/src/main/proto/timeline.proto
index b00c05e..28266d3 100644
--- a/wear/tiles/tiles-proto/src/main/proto/timeline.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/timeline.proto
@@ -2,11 +2,11 @@
 // given time intervals.
 syntax = "proto3";
 
-package androidx.wear.tiles.proto;
+package androidx.wear.protolayout.proto;
 
 import "layout.proto";
 
-option java_package = "androidx.wear.tiles.proto";
+option java_package = "androidx.wear.protolayout.proto";
 option java_outer_classname = "TimelineProto";
 
 // A time interval, typically used to describe the validity period of a
diff --git a/wear/tiles/tiles-proto/src/main/proto/types.proto b/wear/protolayout/protolayout-proto/src/main/proto/types.proto
similarity index 81%
rename from wear/tiles/tiles-proto/src/main/proto/types.proto
rename to wear/protolayout/protolayout-proto/src/main/proto/types.proto
index 42b66c9..00591bc 100644
--- a/wear/tiles/tiles-proto/src/main/proto/types.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/types.proto
@@ -1,9 +1,9 @@
 // Extensible primitive types used by layout elements.
 syntax = "proto3";
 
-package androidx.wear.tiles.proto;
+package androidx.wear.protolayout.proto;
 
-option java_package = "androidx.wear.tiles.proto";
+option java_package = "androidx.wear.protolayout.proto";
 option java_outer_classname = "TypesProto";
 
 // An int32 type.
diff --git a/wear/tiles/tiles-proto/src/main/proto/version.proto b/wear/protolayout/protolayout-proto/src/main/proto/version.proto
similarity index 85%
rename from wear/tiles/tiles-proto/src/main/proto/version.proto
rename to wear/protolayout/protolayout-proto/src/main/proto/version.proto
index 869841a..4a006bb 100644
--- a/wear/tiles/tiles-proto/src/main/proto/version.proto
+++ b/wear/protolayout/protolayout-proto/src/main/proto/version.proto
@@ -1,9 +1,9 @@
 // The components of a tile that can be rendered by a tile renderer.
 syntax = "proto3";
 
-package androidx.wear.tiles.proto;
+package androidx.wear.protolayout.proto;
 
-option java_package = "androidx.wear.tiles.proto";
+option java_package = "androidx.wear.protolayout.proto";
 option java_outer_classname = "VersionProto";
 
 // Version information. This is used to encode the schema version of a payload
diff --git a/wear/tiles/tiles-material/src/androidTest/java/androidx/wear/tiles/material/testapp/GoldenTestActivity.java b/wear/tiles/tiles-material/src/androidTest/java/androidx/wear/tiles/material/testapp/GoldenTestActivity.java
index 36a28fb..3fd63b3 100644
--- a/wear/tiles/tiles-material/src/androidTest/java/androidx/wear/tiles/material/testapp/GoldenTestActivity.java
+++ b/wear/tiles/tiles-material/src/androidTest/java/androidx/wear/tiles/material/testapp/GoldenTestActivity.java
@@ -39,7 +39,7 @@
 import androidx.wear.tiles.ResourceBuilders.ImageResource;
 import androidx.wear.tiles.ResourceBuilders.Resources;
 import androidx.wear.tiles.material.R;
-import androidx.wear.tiles.proto.LayoutElementProto.LayoutElement;
+import androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement;
 import androidx.wear.tiles.renderer.TileRenderer;
 
 import java.util.concurrent.Executor;
diff --git a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/Button.java b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/Button.java
index 81f4392..62f41ba 100644
--- a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/Button.java
+++ b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/Button.java
@@ -52,7 +52,7 @@
 import androidx.wear.tiles.ModifiersBuilders.Modifiers;
 import androidx.wear.tiles.ModifiersBuilders.Semantics;
 import androidx.wear.tiles.material.Typography.TypographyName;
-import androidx.wear.tiles.proto.LayoutElementProto;
+import androidx.wear.protolayout.proto.LayoutElementProto;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/Chip.java b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/Chip.java
index c704d3f..e60493c 100644
--- a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/Chip.java
+++ b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/Chip.java
@@ -62,7 +62,7 @@
 import androidx.wear.tiles.ModifiersBuilders.Padding;
 import androidx.wear.tiles.ModifiersBuilders.Semantics;
 import androidx.wear.tiles.material.Typography.TypographyName;
-import androidx.wear.tiles.proto.LayoutElementProto;
+import androidx.wear.protolayout.proto.LayoutElementProto;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/CircularProgressIndicator.java b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/CircularProgressIndicator.java
index abb0108..42e24e5 100644
--- a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/CircularProgressIndicator.java
+++ b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/CircularProgressIndicator.java
@@ -47,7 +47,7 @@
 import androidx.wear.tiles.ModifiersBuilders.Modifiers;
 import androidx.wear.tiles.ModifiersBuilders.Padding;
 import androidx.wear.tiles.ModifiersBuilders.Semantics;
-import androidx.wear.tiles.proto.LayoutElementProto;
+import androidx.wear.protolayout.proto.LayoutElementProto;
 
 /**
  * Tiles component {@link CircularProgressIndicator} that represents circular progress indicator
diff --git a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/CompactChip.java b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/CompactChip.java
index 21bb316..e8ff215 100644
--- a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/CompactChip.java
+++ b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/CompactChip.java
@@ -39,7 +39,7 @@
 import androidx.wear.tiles.ModifiersBuilders.Clickable;
 import androidx.wear.tiles.ModifiersBuilders.ElementMetadata;
 import androidx.wear.tiles.ModifiersBuilders.Modifiers;
-import androidx.wear.tiles.proto.LayoutElementProto;
+import androidx.wear.protolayout.proto.LayoutElementProto;
 
 /**
  * Tiles component {@link CompactChip} that represents clickable object with the text.
diff --git a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/Text.java b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/Text.java
index ae86212..fc8f794 100644
--- a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/Text.java
+++ b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/Text.java
@@ -44,8 +44,8 @@
 import androidx.wear.tiles.ModifiersBuilders.ElementMetadata;
 import androidx.wear.tiles.ModifiersBuilders.Modifiers;
 import androidx.wear.tiles.material.Typography.TypographyName;
-import androidx.wear.tiles.proto.LayoutElementProto;
-import androidx.wear.tiles.proto.ModifiersProto;
+import androidx.wear.protolayout.proto.LayoutElementProto;
+import androidx.wear.protolayout.proto.ModifiersProto;
 
 /**
  * Tiles component {@link Text} that represents text object holding any information.
diff --git a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/TitleChip.java b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/TitleChip.java
index d220e42..807e2c7 100644
--- a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/TitleChip.java
+++ b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/TitleChip.java
@@ -38,7 +38,7 @@
 import androidx.wear.tiles.LayoutElementBuilders.HorizontalAlignment;
 import androidx.wear.tiles.LayoutElementBuilders.LayoutElement;
 import androidx.wear.tiles.ModifiersBuilders.Clickable;
-import androidx.wear.tiles.proto.LayoutElementProto;
+import androidx.wear.protolayout.proto.LayoutElementProto;
 
 /**
  * Tiles component {@link TitleChip} that represents clickable object with the text.
diff --git a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/EdgeContentLayout.java b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/EdgeContentLayout.java
index d5fcbed..49e9ddf2 100644
--- a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/EdgeContentLayout.java
+++ b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/EdgeContentLayout.java
@@ -45,7 +45,7 @@
 import androidx.wear.tiles.ModifiersBuilders.Modifiers;
 import androidx.wear.tiles.ModifiersBuilders.Padding;
 import androidx.wear.tiles.material.CircularProgressIndicator;
-import androidx.wear.tiles.proto.LayoutElementProto;
+import androidx.wear.protolayout.proto.LayoutElementProto;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/MultiButtonLayout.java b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/MultiButtonLayout.java
index f1581bc..67053c9 100644
--- a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/MultiButtonLayout.java
+++ b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/MultiButtonLayout.java
@@ -42,7 +42,7 @@
 import androidx.wear.tiles.ModifiersBuilders.ElementMetadata;
 import androidx.wear.tiles.ModifiersBuilders.Modifiers;
 import androidx.wear.tiles.material.Button;
-import androidx.wear.tiles.proto.LayoutElementProto;
+import androidx.wear.protolayout.proto.LayoutElementProto;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/MultiSlotLayout.java b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/MultiSlotLayout.java
index e6c9998..0e5196b 100644
--- a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/MultiSlotLayout.java
+++ b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/MultiSlotLayout.java
@@ -41,7 +41,7 @@
 import androidx.wear.tiles.LayoutElementBuilders.Spacer;
 import androidx.wear.tiles.ModifiersBuilders.ElementMetadata;
 import androidx.wear.tiles.ModifiersBuilders.Modifiers;
-import androidx.wear.tiles.proto.LayoutElementProto;
+import androidx.wear.protolayout.proto.LayoutElementProto;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/PrimaryLayout.java b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/PrimaryLayout.java
index 4125e6c..2a215ca 100644
--- a/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/PrimaryLayout.java
+++ b/wear/tiles/tiles-material/src/main/java/androidx/wear/tiles/material/layouts/PrimaryLayout.java
@@ -58,7 +58,7 @@
 import androidx.wear.tiles.ModifiersBuilders.Modifiers;
 import androidx.wear.tiles.ModifiersBuilders.Padding;
 import androidx.wear.tiles.material.CompactChip;
-import androidx.wear.tiles.proto.LayoutElementProto;
+import androidx.wear.protolayout.proto.LayoutElementProto;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/wear/tiles/tiles-proto/build.gradle b/wear/tiles/tiles-proto/build.gradle
index b2ebf91..91b8bbd 100644
--- a/wear/tiles/tiles-proto/build.gradle
+++ b/wear/tiles/tiles-proto/build.gradle
@@ -13,57 +13,45 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 import androidx.build.Publish
 import androidx.build.RunApiTasks
-import com.github.jengelman.gradle.plugins.shadow.transformers.DontIncludeResourceTransformer
-
 plugins {
     id("AndroidXPlugin")
     id("java-library")
     id("com.google.protobuf")
     id("com.github.johnrengelman.shadow")
 }
-
 configurations {
     shadowed
-
     compileOnly.extendsFrom(shadowed)
     testCompile.extendsFrom(shadowed)
 }
-
 dependencies {
+    constraints {
+        implementation(project(":wear:protolayout:protolayout-proto"))
+    }
+
     implementation("androidx.annotation:annotation:1.1.0")
-    shadowed(libs.protobufLite)
+    compileOnly(libs.protobufLite)
+    // Use a non-shadow configuration during compile to pick up the proto dependencies.
+    // But declare the proper shadowed dependency externally.
+    // For some reason not specifying the configuration causes undeclared changes to the inputs to
+    // extractIncludeProto task (making it out-dated without any source change).
+    compileOnly(project(path:":wear:protolayout:protolayout-proto", configuration:"archives"))
+    api(project(path:":wear:protolayout:protolayout-proto", configuration:"shadow"))
 }
-
-sourceSets {
-    main.java.srcDirs += "$buildDir/generated/source/proto"
-}
-
 // HACK: Move standard JAR to have another suffix and build a shadowJar with
 // no classifier (so it's picked up as the primary artifact).
 jar {
     archiveClassifier = 'before-shadow'
 }
-
 shadowJar {
     archiveClassifier = ''
     configurations = [project.configurations.shadowed]
-
-    relocate "com.google.protobuf", "androidx.wear.tiles.protobuf"
-
-    // libs.protobufLite ships with a standard set of proto files in the JAR, which clash if this
-    // library is included from two different downstream libraries. exclude("*.proto") (or
-    // **/*.proto etc etc) doesn't exclude the ones from libs.protobufLite, so take a more heavy handed
-    // approach and use a transformer to strip those files.
-    transform(DontIncludeResourceTransformer.class) {
-        resource = ".proto"
-    }
+    relocate "com.google.protobuf", "androidx.wear.protolayout.protobuf"
+    exclude("**/*.proto")
 }
-
 assemble.dependsOn(shadowJar)
-
 configurations {
     apiElements.outgoing.artifacts.clear()
     apiElements.outgoing.artifact(shadowJar) {
@@ -74,12 +62,10 @@
         builtBy shadowJar
     }
 }
-
 protobuf {
     protoc {
         artifact = libs.protobufCompiler.get()
     }
-
     generateProtoTasks {
         ofSourceSet("main").each { task ->
             sourceSets.main.java.srcDir(task)
@@ -93,7 +79,6 @@
         }
     }
 }
-
 afterEvaluate {
     lint {
         lintOptions {
@@ -102,7 +87,6 @@
         }
     }
 }
-
 androidx {
     name = "Wear Tiles Proto"
     publish = Publish.SNAPSHOT_AND_RELEASE
@@ -112,4 +96,4 @@
             "wear-tiles."
     runApiTasks = new RunApiTasks.No("Metalava doesn't properly parse the proto sources " +
             "(b/180579063)")
-}
+}
\ No newline at end of file
diff --git a/wear/tiles/tiles-proto/src/main/proto/requests.proto b/wear/tiles/tiles-proto/src/main/proto/requests.proto
index 2b6d7bf..f171d08 100644
--- a/wear/tiles/tiles-proto/src/main/proto/requests.proto
+++ b/wear/tiles/tiles-proto/src/main/proto/requests.proto
@@ -13,10 +13,10 @@
 // version of the tile.
 message TileRequest {
   // Parameters describing the device requesting the tile update.
-  DeviceParameters device_parameters = 1;
+  androidx.wear.protolayout.proto.DeviceParameters device_parameters = 1;
 
   // The state that should be used when building the tile.
-  State state = 2;
+  androidx.wear.protolayout.proto.State state = 2;
 }
 
 // Parameters passed to a Tile Service when the renderer is requesting a
@@ -36,5 +36,5 @@
   repeated string resource_ids = 2;
 
   // Parameters describing the device requesting the resources.
-  DeviceParameters device_parameters = 3;
+  androidx.wear.protolayout.proto.DeviceParameters device_parameters = 3;
 }
diff --git a/wear/tiles/tiles-proto/src/main/proto/tile.proto b/wear/tiles/tiles-proto/src/main/proto/tile.proto
index 3abfaf8..fc3d294 100644
--- a/wear/tiles/tiles-proto/src/main/proto/tile.proto
+++ b/wear/tiles/tiles-proto/src/main/proto/tile.proto
@@ -19,10 +19,10 @@
   string resources_version = 1;
 
   // The tiles to show in the carousel, along with their validity periods.
-  Timeline timeline = 2;
+  androidx.wear.protolayout.proto.Timeline timeline = 2;
 
   // The schema version that this tile was built with.
-  VersionInfo schema_version = 3;
+  androidx.wear.protolayout.proto.VersionInfo schema_version = 3;
 
   // How many milliseconds of elapsed time (**not** wall clock time) this tile
   // can be considered to be "fresh". The platform will attempt to refresh
diff --git a/wear/tiles/tiles-renderer/src/androidTest/java/androidx/wear/tiles/renderer/test/TileRendererGoldenTest.java b/wear/tiles/tiles-renderer/src/androidTest/java/androidx/wear/tiles/renderer/test/TileRendererGoldenTest.java
index 44045e5..8b6ef65 100644
--- a/wear/tiles/tiles-renderer/src/androidTest/java/androidx/wear/tiles/renderer/test/TileRendererGoldenTest.java
+++ b/wear/tiles/tiles-renderer/src/androidTest/java/androidx/wear/tiles/renderer/test/TileRendererGoldenTest.java
@@ -32,14 +32,14 @@
 import androidx.test.screenshot.matchers.MSSIMMatcher;
 import androidx.wear.tiles.LayoutElementBuilders;
 import androidx.wear.tiles.ResourceBuilders;
-import androidx.wear.tiles.proto.LayoutElementProto.Layout;
-import androidx.wear.tiles.proto.LayoutElementProto.LayoutElement;
-import androidx.wear.tiles.proto.ResourceProto.AndroidImageResourceByResId;
-import androidx.wear.tiles.proto.ResourceProto.ImageFormat;
-import androidx.wear.tiles.proto.ResourceProto.ImageResource;
-import androidx.wear.tiles.proto.ResourceProto.InlineImageResource;
-import androidx.wear.tiles.proto.ResourceProto.Resources;
-import androidx.wear.tiles.protobuf.ByteString;
+import androidx.wear.protolayout.proto.LayoutElementProto.Layout;
+import androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement;
+import androidx.wear.protolayout.proto.ResourceProto.AndroidImageResourceByResId;
+import androidx.wear.protolayout.proto.ResourceProto.ImageFormat;
+import androidx.wear.protolayout.proto.ResourceProto.ImageResource;
+import androidx.wear.protolayout.proto.ResourceProto.InlineImageResource;
+import androidx.wear.protolayout.proto.ResourceProto.Resources;
+import androidx.wear.protolayout.protobuf.ByteString;
 import androidx.wear.tiles.renderer.TileRenderer;
 
 import com.google.protobuf.TextFormat;
diff --git a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/connection/DefaultTileClient.kt b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/connection/DefaultTileClient.kt
index dd509d06..601a189d 100644
--- a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/connection/DefaultTileClient.kt
+++ b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/connection/DefaultTileClient.kt
@@ -37,9 +37,9 @@
 import androidx.wear.tiles.TileService
 import androidx.wear.tiles.TileRemoveEventData
 import androidx.wear.tiles.client.TileClient
-import androidx.wear.tiles.proto.ResourceProto
+import androidx.wear.protolayout.proto.ResourceProto
 import androidx.wear.tiles.proto.TileProto
-import androidx.wear.tiles.protobuf.InvalidProtocolBufferException
+import androidx.wear.protolayout.protobuf.InvalidProtocolBufferException
 import com.google.common.util.concurrent.ListenableFuture
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
diff --git a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/DefaultAndroidImageResourceByResIdResolver.java b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/DefaultAndroidImageResourceByResIdResolver.java
index 06345ca..3f422ce 100644
--- a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/DefaultAndroidImageResourceByResIdResolver.java
+++ b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/DefaultAndroidImageResourceByResIdResolver.java
@@ -21,7 +21,7 @@
 import android.graphics.drawable.Drawable;
 
 import androidx.annotation.NonNull;
-import androidx.wear.tiles.proto.ResourceProto.AndroidImageResourceByResId;
+import androidx.wear.protolayout.proto.ResourceProto.AndroidImageResourceByResId;
 import androidx.wear.tiles.renderer.internal.ResourceResolvers.AndroidImageResourceByResIdResolver;
 
 import com.google.common.util.concurrent.ListenableFuture;
diff --git a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/DefaultInlineImageResourceResolver.java b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/DefaultInlineImageResourceResolver.java
index 9f06df3..d0a5ae6 100644
--- a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/DefaultInlineImageResourceResolver.java
+++ b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/DefaultInlineImageResourceResolver.java
@@ -25,8 +25,8 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.wear.tiles.proto.ResourceProto.ImageFormat;
-import androidx.wear.tiles.proto.ResourceProto.InlineImageResource;
+import androidx.wear.protolayout.proto.ResourceProto.ImageFormat;
+import androidx.wear.protolayout.proto.ResourceProto.InlineImageResource;
 import androidx.wear.tiles.renderer.internal.ResourceResolvers.InlineImageResourceResolver;
 import androidx.wear.tiles.renderer.internal.ResourceResolvers.ResourceAccessException;
 
diff --git a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/ResourceResolvers.java b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/ResourceResolvers.java
index f98f776..4c4ef42 100644
--- a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/ResourceResolvers.java
+++ b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/ResourceResolvers.java
@@ -22,9 +22,9 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.concurrent.futures.ResolvableFuture;
-import androidx.wear.tiles.proto.ResourceProto;
-import androidx.wear.tiles.proto.ResourceProto.AndroidImageResourceByResId;
-import androidx.wear.tiles.proto.ResourceProto.InlineImageResource;
+import androidx.wear.protolayout.proto.ResourceProto;
+import androidx.wear.protolayout.proto.ResourceProto.AndroidImageResourceByResId;
+import androidx.wear.protolayout.proto.ResourceProto.InlineImageResource;
 
 import com.google.common.util.concurrent.ListenableFuture;
 
diff --git a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/StandardResourceResolvers.java b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/StandardResourceResolvers.java
index 6308bbf..c5e7db3 100644
--- a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/StandardResourceResolvers.java
+++ b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/StandardResourceResolvers.java
@@ -21,7 +21,7 @@
 
 import androidx.annotation.NonNull;
 import androidx.wear.tiles.TileService;
-import androidx.wear.tiles.proto.ResourceProto;
+import androidx.wear.protolayout.proto.ResourceProto;
 
 /** Utility class to get {@link ResourceResolvers} populated with standard options. */
 public class StandardResourceResolvers {
diff --git a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/TileRendererInternal.java b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/TileRendererInternal.java
index c071ee6..07e6ea9 100644
--- a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/TileRendererInternal.java
+++ b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/renderer/internal/TileRendererInternal.java
@@ -69,54 +69,54 @@
 import androidx.annotation.StyleRes;
 import androidx.core.content.ContextCompat;
 import androidx.wear.tiles.TileService;
-import androidx.wear.tiles.proto.ActionProto.Action;
-import androidx.wear.tiles.proto.ActionProto.AndroidActivity;
-import androidx.wear.tiles.proto.ActionProto.AndroidExtra;
-import androidx.wear.tiles.proto.ActionProto.LaunchAction;
-import androidx.wear.tiles.proto.ActionProto.LoadAction;
-import androidx.wear.tiles.proto.DimensionProto.ContainerDimension;
-import androidx.wear.tiles.proto.DimensionProto.ContainerDimension.InnerCase;
-import androidx.wear.tiles.proto.DimensionProto.DpProp;
-import androidx.wear.tiles.proto.DimensionProto.ExpandedDimensionProp;
-import androidx.wear.tiles.proto.DimensionProto.ImageDimension;
-import androidx.wear.tiles.proto.DimensionProto.ProportionalDimensionProp;
-import androidx.wear.tiles.proto.DimensionProto.SpProp;
-import androidx.wear.tiles.proto.DimensionProto.SpacerDimension;
-import androidx.wear.tiles.proto.DimensionProto.WrappedDimensionProp;
-import androidx.wear.tiles.proto.LayoutElementProto.Arc;
-import androidx.wear.tiles.proto.LayoutElementProto.ArcAnchorTypeProp;
-import androidx.wear.tiles.proto.LayoutElementProto.ArcLayoutElement;
-import androidx.wear.tiles.proto.LayoutElementProto.ArcLine;
-import androidx.wear.tiles.proto.LayoutElementProto.ArcSpacer;
-import androidx.wear.tiles.proto.LayoutElementProto.ArcText;
-import androidx.wear.tiles.proto.LayoutElementProto.Box;
-import androidx.wear.tiles.proto.LayoutElementProto.Column;
-import androidx.wear.tiles.proto.LayoutElementProto.ContentScaleMode;
-import androidx.wear.tiles.proto.LayoutElementProto.FontStyle;
-import androidx.wear.tiles.proto.LayoutElementProto.FontVariant;
-import androidx.wear.tiles.proto.LayoutElementProto.HorizontalAlignmentProp;
-import androidx.wear.tiles.proto.LayoutElementProto.Image;
-import androidx.wear.tiles.proto.LayoutElementProto.Layout;
-import androidx.wear.tiles.proto.LayoutElementProto.LayoutElement;
-import androidx.wear.tiles.proto.LayoutElementProto.Row;
-import androidx.wear.tiles.proto.LayoutElementProto.Spacer;
-import androidx.wear.tiles.proto.LayoutElementProto.Span;
-import androidx.wear.tiles.proto.LayoutElementProto.SpanImage;
-import androidx.wear.tiles.proto.LayoutElementProto.SpanText;
-import androidx.wear.tiles.proto.LayoutElementProto.SpanVerticalAlignmentProp;
-import androidx.wear.tiles.proto.LayoutElementProto.Spannable;
-import androidx.wear.tiles.proto.LayoutElementProto.Text;
-import androidx.wear.tiles.proto.LayoutElementProto.TextAlignmentProp;
-import androidx.wear.tiles.proto.LayoutElementProto.TextOverflowProp;
-import androidx.wear.tiles.proto.LayoutElementProto.VerticalAlignmentProp;
-import androidx.wear.tiles.proto.ModifiersProto.ArcModifiers;
-import androidx.wear.tiles.proto.ModifiersProto.Background;
-import androidx.wear.tiles.proto.ModifiersProto.Border;
-import androidx.wear.tiles.proto.ModifiersProto.Clickable;
-import androidx.wear.tiles.proto.ModifiersProto.Modifiers;
-import androidx.wear.tiles.proto.ModifiersProto.Padding;
-import androidx.wear.tiles.proto.ModifiersProto.SpanModifiers;
-import androidx.wear.tiles.proto.StateProto.State;
+import androidx.wear.protolayout.proto.ActionProto.Action;
+import androidx.wear.protolayout.proto.ActionProto.AndroidActivity;
+import androidx.wear.protolayout.proto.ActionProto.AndroidExtra;
+import androidx.wear.protolayout.proto.ActionProto.LaunchAction;
+import androidx.wear.protolayout.proto.ActionProto.LoadAction;
+import androidx.wear.protolayout.proto.DimensionProto.ContainerDimension;
+import androidx.wear.protolayout.proto.DimensionProto.ContainerDimension.InnerCase;
+import androidx.wear.protolayout.proto.DimensionProto.DpProp;
+import androidx.wear.protolayout.proto.DimensionProto.ExpandedDimensionProp;
+import androidx.wear.protolayout.proto.DimensionProto.ImageDimension;
+import androidx.wear.protolayout.proto.DimensionProto.ProportionalDimensionProp;
+import androidx.wear.protolayout.proto.DimensionProto.SpProp;
+import androidx.wear.protolayout.proto.DimensionProto.SpacerDimension;
+import androidx.wear.protolayout.proto.DimensionProto.WrappedDimensionProp;
+import androidx.wear.protolayout.proto.LayoutElementProto.Arc;
+import androidx.wear.protolayout.proto.LayoutElementProto.ArcAnchorTypeProp;
+import androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement;
+import androidx.wear.protolayout.proto.LayoutElementProto.ArcLine;
+import androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer;
+import androidx.wear.protolayout.proto.LayoutElementProto.ArcText;
+import androidx.wear.protolayout.proto.LayoutElementProto.Box;
+import androidx.wear.protolayout.proto.LayoutElementProto.Column;
+import androidx.wear.protolayout.proto.LayoutElementProto.ContentScaleMode;
+import androidx.wear.protolayout.proto.LayoutElementProto.FontStyle;
+import androidx.wear.protolayout.proto.LayoutElementProto.FontVariant;
+import androidx.wear.protolayout.proto.LayoutElementProto.HorizontalAlignmentProp;
+import androidx.wear.protolayout.proto.LayoutElementProto.Image;
+import androidx.wear.protolayout.proto.LayoutElementProto.Layout;
+import androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement;
+import androidx.wear.protolayout.proto.LayoutElementProto.Row;
+import androidx.wear.protolayout.proto.LayoutElementProto.Spacer;
+import androidx.wear.protolayout.proto.LayoutElementProto.Span;
+import androidx.wear.protolayout.proto.LayoutElementProto.SpanImage;
+import androidx.wear.protolayout.proto.LayoutElementProto.SpanText;
+import androidx.wear.protolayout.proto.LayoutElementProto.SpanVerticalAlignmentProp;
+import androidx.wear.protolayout.proto.LayoutElementProto.Spannable;
+import androidx.wear.protolayout.proto.LayoutElementProto.Text;
+import androidx.wear.protolayout.proto.LayoutElementProto.TextAlignmentProp;
+import androidx.wear.protolayout.proto.LayoutElementProto.TextOverflowProp;
+import androidx.wear.protolayout.proto.LayoutElementProto.VerticalAlignmentProp;
+import androidx.wear.protolayout.proto.ModifiersProto.ArcModifiers;
+import androidx.wear.protolayout.proto.ModifiersProto.Background;
+import androidx.wear.protolayout.proto.ModifiersProto.Border;
+import androidx.wear.protolayout.proto.ModifiersProto.Clickable;
+import androidx.wear.protolayout.proto.ModifiersProto.Modifiers;
+import androidx.wear.protolayout.proto.ModifiersProto.Padding;
+import androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers;
+import androidx.wear.protolayout.proto.StateProto.State;
 import androidx.wear.tiles.renderer.R;
 import androidx.wear.tiles.renderer.internal.ResourceResolvers.ResourceAccessException;
 import androidx.wear.widget.ArcLayout;
diff --git a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/timeline/TilesTimelineCache.java b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/timeline/TilesTimelineCache.java
index c69aaeb..3bc7f8d 100644
--- a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/timeline/TilesTimelineCache.java
+++ b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/timeline/TilesTimelineCache.java
@@ -20,7 +20,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.wear.tiles.TimelineBuilders;
-import androidx.wear.tiles.proto.TimelineProto.TimelineEntry;
+import androidx.wear.protolayout.proto.TimelineProto.TimelineEntry;
 import androidx.wear.tiles.timeline.internal.TilesTimelineCacheInternal;
 
 /**
diff --git a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/timeline/internal/TilesTimelineCacheInternal.java b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/timeline/internal/TilesTimelineCacheInternal.java
index 91dc111..4571ad5 100644
--- a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/timeline/internal/TilesTimelineCacheInternal.java
+++ b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/timeline/internal/TilesTimelineCacheInternal.java
@@ -19,9 +19,9 @@
 import androidx.annotation.MainThread;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.wear.tiles.proto.TimelineProto.TimeInterval;
-import androidx.wear.tiles.proto.TimelineProto.Timeline;
-import androidx.wear.tiles.proto.TimelineProto.TimelineEntry;
+import androidx.wear.protolayout.proto.TimelineProto.TimeInterval;
+import androidx.wear.protolayout.proto.TimelineProto.Timeline;
+import androidx.wear.protolayout.proto.TimelineProto.TimelineEntry;
 
 /**
  * Timeline cache for Tiles. This will take in a full timeline, and return the appropriate entry for
diff --git a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/timeline/internal/TilesTimelineManagerInternal.java b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/timeline/internal/TilesTimelineManagerInternal.java
index ccf786d..d25e42d 100644
--- a/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/timeline/internal/TilesTimelineManagerInternal.java
+++ b/wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/timeline/internal/TilesTimelineManagerInternal.java
@@ -25,8 +25,8 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.wear.tiles.proto.TimelineProto.Timeline;
-import androidx.wear.tiles.proto.TimelineProto.TimelineEntry;
+import androidx.wear.protolayout.proto.TimelineProto.Timeline;
+import androidx.wear.protolayout.proto.TimelineProto.TimelineEntry;
 
 import java.util.concurrent.Executor;
 
diff --git a/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/connection/DefaultTileClientTest.kt b/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/connection/DefaultTileClientTest.kt
index b6e2c7f..5fc55c5 100644
--- a/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/connection/DefaultTileClientTest.kt
+++ b/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/connection/DefaultTileClientTest.kt
@@ -38,7 +38,7 @@
 import androidx.wear.tiles.TileRequestData
 import androidx.wear.tiles.TilesTestRunner
 import androidx.wear.tiles.proto.TileProto
-import androidx.wear.tiles.protobuf.InvalidProtocolBufferException
+import androidx.wear.protolayout.protobuf.InvalidProtocolBufferException
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.TimeoutCancellationException
diff --git a/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/renderer/internal/TileRendererInternalTest.java b/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/renderer/internal/TileRendererInternalTest.java
index 68914be..01c37cf 100644
--- a/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/renderer/internal/TileRendererInternalTest.java
+++ b/wear/tiles/tiles-renderer/src/test/java/androidx/wear/tiles/renderer/internal/TileRendererInternalTest.java
@@ -40,58 +40,58 @@
 import androidx.core.content.ContextCompat;
 import androidx.wear.tiles.TileService;
 import androidx.wear.tiles.TilesTestRunner;
-import androidx.wear.tiles.proto.ActionProto.Action;
-import androidx.wear.tiles.proto.ActionProto.AndroidActivity;
-import androidx.wear.tiles.proto.ActionProto.AndroidBooleanExtra;
-import androidx.wear.tiles.proto.ActionProto.AndroidDoubleExtra;
-import androidx.wear.tiles.proto.ActionProto.AndroidExtra;
-import androidx.wear.tiles.proto.ActionProto.AndroidIntExtra;
-import androidx.wear.tiles.proto.ActionProto.AndroidLongExtra;
-import androidx.wear.tiles.proto.ActionProto.AndroidStringExtra;
-import androidx.wear.tiles.proto.ActionProto.LaunchAction;
-import androidx.wear.tiles.proto.ActionProto.LoadAction;
-import androidx.wear.tiles.proto.ColorProto.ColorProp;
-import androidx.wear.tiles.proto.DimensionProto.ContainerDimension;
-import androidx.wear.tiles.proto.DimensionProto.DegreesProp;
-import androidx.wear.tiles.proto.DimensionProto.DpProp;
-import androidx.wear.tiles.proto.DimensionProto.ExpandedDimensionProp;
-import androidx.wear.tiles.proto.DimensionProto.ImageDimension;
-import androidx.wear.tiles.proto.DimensionProto.ProportionalDimensionProp;
-import androidx.wear.tiles.proto.DimensionProto.SpacerDimension;
-import androidx.wear.tiles.proto.DimensionProto.WrappedDimensionProp;
-import androidx.wear.tiles.proto.LayoutElementProto.Arc;
-import androidx.wear.tiles.proto.LayoutElementProto.ArcLayoutElement;
-import androidx.wear.tiles.proto.LayoutElementProto.ArcLine;
-import androidx.wear.tiles.proto.LayoutElementProto.ArcSpacer;
-import androidx.wear.tiles.proto.LayoutElementProto.ArcText;
-import androidx.wear.tiles.proto.LayoutElementProto.Box;
-import androidx.wear.tiles.proto.LayoutElementProto.Column;
-import androidx.wear.tiles.proto.LayoutElementProto.FontStyle;
-import androidx.wear.tiles.proto.LayoutElementProto.HorizontalAlignment;
-import androidx.wear.tiles.proto.LayoutElementProto.HorizontalAlignmentProp;
-import androidx.wear.tiles.proto.LayoutElementProto.Image;
-import androidx.wear.tiles.proto.LayoutElementProto.Layout;
-import androidx.wear.tiles.proto.LayoutElementProto.LayoutElement;
-import androidx.wear.tiles.proto.LayoutElementProto.Row;
-import androidx.wear.tiles.proto.LayoutElementProto.Spacer;
-import androidx.wear.tiles.proto.LayoutElementProto.Span;
-import androidx.wear.tiles.proto.LayoutElementProto.SpanImage;
-import androidx.wear.tiles.proto.LayoutElementProto.SpanText;
-import androidx.wear.tiles.proto.LayoutElementProto.Spannable;
-import androidx.wear.tiles.proto.LayoutElementProto.Text;
-import androidx.wear.tiles.proto.LayoutElementProto.VerticalAlignment;
-import androidx.wear.tiles.proto.LayoutElementProto.VerticalAlignmentProp;
-import androidx.wear.tiles.proto.ModifiersProto.Border;
-import androidx.wear.tiles.proto.ModifiersProto.Clickable;
-import androidx.wear.tiles.proto.ModifiersProto.Modifiers;
-import androidx.wear.tiles.proto.ModifiersProto.Padding;
-import androidx.wear.tiles.proto.ModifiersProto.Semantics;
-import androidx.wear.tiles.proto.ModifiersProto.SpanModifiers;
-import androidx.wear.tiles.proto.ResourceProto.AndroidImageResourceByResId;
-import androidx.wear.tiles.proto.ResourceProto.ImageResource;
-import androidx.wear.tiles.proto.ResourceProto.Resources;
-import androidx.wear.tiles.proto.StateProto.State;
-import androidx.wear.tiles.proto.TypesProto.StringProp;
+import androidx.wear.protolayout.proto.ActionProto.Action;
+import androidx.wear.protolayout.proto.ActionProto.AndroidActivity;
+import androidx.wear.protolayout.proto.ActionProto.AndroidBooleanExtra;
+import androidx.wear.protolayout.proto.ActionProto.AndroidDoubleExtra;
+import androidx.wear.protolayout.proto.ActionProto.AndroidExtra;
+import androidx.wear.protolayout.proto.ActionProto.AndroidIntExtra;
+import androidx.wear.protolayout.proto.ActionProto.AndroidLongExtra;
+import androidx.wear.protolayout.proto.ActionProto.AndroidStringExtra;
+import androidx.wear.protolayout.proto.ActionProto.LaunchAction;
+import androidx.wear.protolayout.proto.ActionProto.LoadAction;
+import androidx.wear.protolayout.proto.ColorProto.ColorProp;
+import androidx.wear.protolayout.proto.DimensionProto.ContainerDimension;
+import androidx.wear.protolayout.proto.DimensionProto.DegreesProp;
+import androidx.wear.protolayout.proto.DimensionProto.DpProp;
+import androidx.wear.protolayout.proto.DimensionProto.ExpandedDimensionProp;
+import androidx.wear.protolayout.proto.DimensionProto.ImageDimension;
+import androidx.wear.protolayout.proto.DimensionProto.ProportionalDimensionProp;
+import androidx.wear.protolayout.proto.DimensionProto.SpacerDimension;
+import androidx.wear.protolayout.proto.DimensionProto.WrappedDimensionProp;
+import androidx.wear.protolayout.proto.LayoutElementProto.Arc;
+import androidx.wear.protolayout.proto.LayoutElementProto.ArcLayoutElement;
+import androidx.wear.protolayout.proto.LayoutElementProto.ArcLine;
+import androidx.wear.protolayout.proto.LayoutElementProto.ArcSpacer;
+import androidx.wear.protolayout.proto.LayoutElementProto.ArcText;
+import androidx.wear.protolayout.proto.LayoutElementProto.Box;
+import androidx.wear.protolayout.proto.LayoutElementProto.Column;
+import androidx.wear.protolayout.proto.LayoutElementProto.FontStyle;
+import androidx.wear.protolayout.proto.LayoutElementProto.HorizontalAlignment;
+import androidx.wear.protolayout.proto.LayoutElementProto.HorizontalAlignmentProp;
+import androidx.wear.protolayout.proto.LayoutElementProto.Image;
+import androidx.wear.protolayout.proto.LayoutElementProto.Layout;
+import androidx.wear.protolayout.proto.LayoutElementProto.LayoutElement;
+import androidx.wear.protolayout.proto.LayoutElementProto.Row;
+import androidx.wear.protolayout.proto.LayoutElementProto.Spacer;
+import androidx.wear.protolayout.proto.LayoutElementProto.Span;
+import androidx.wear.protolayout.proto.LayoutElementProto.SpanImage;
+import androidx.wear.protolayout.proto.LayoutElementProto.SpanText;
+import androidx.wear.protolayout.proto.LayoutElementProto.Spannable;
+import androidx.wear.protolayout.proto.LayoutElementProto.Text;
+import androidx.wear.protolayout.proto.LayoutElementProto.VerticalAlignment;
+import androidx.wear.protolayout.proto.LayoutElementProto.VerticalAlignmentProp;
+import androidx.wear.protolayout.proto.ModifiersProto.Border;
+import androidx.wear.protolayout.proto.ModifiersProto.Clickable;
+import androidx.wear.protolayout.proto.ModifiersProto.Modifiers;
+import androidx.wear.protolayout.proto.ModifiersProto.Padding;
+import androidx.wear.protolayout.proto.ModifiersProto.Semantics;
+import androidx.wear.protolayout.proto.ModifiersProto.SpanModifiers;
+import androidx.wear.protolayout.proto.ResourceProto.AndroidImageResourceByResId;
+import androidx.wear.protolayout.proto.ResourceProto.ImageResource;
+import androidx.wear.protolayout.proto.ResourceProto.Resources;
+import androidx.wear.protolayout.proto.StateProto.State;
+import androidx.wear.protolayout.proto.TypesProto.StringProp;
 import androidx.wear.tiles.renderer.test.R;
 import androidx.wear.widget.ArcLayout;
 import androidx.wear.widget.CurvedTextView;
diff --git a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ActionBuilders.java b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ActionBuilders.java
index 243aae3..1b06fe0 100644
--- a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ActionBuilders.java
+++ b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ActionBuilders.java
@@ -25,7 +25,7 @@
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
 import androidx.wear.tiles.StateBuilders.State;
-import androidx.wear.tiles.proto.ActionProto;
+import androidx.wear.protolayout.proto.ActionProto;
 
 import java.util.Collections;
 import java.util.Map;
diff --git a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ColorBuilders.java b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ColorBuilders.java
index fa35b82..bfe3868 100644
--- a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ColorBuilders.java
+++ b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ColorBuilders.java
@@ -20,7 +20,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
-import androidx.wear.tiles.proto.ColorProto;
+import androidx.wear.protolayout.proto.ColorProto;
 
 /** Builders for color utilities for layout elements. */
 public final class ColorBuilders {
diff --git a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/DeviceParametersBuilders.java b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/DeviceParametersBuilders.java
index 74e900a..b39f93f 100644
--- a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/DeviceParametersBuilders.java
+++ b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/DeviceParametersBuilders.java
@@ -24,7 +24,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
-import androidx.wear.tiles.proto.DeviceParametersProto;
+import androidx.wear.protolayout.proto.DeviceParametersProto;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/DimensionBuilders.java b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/DimensionBuilders.java
index 3a754fc..7aaea5b 100644
--- a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/DimensionBuilders.java
+++ b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/DimensionBuilders.java
@@ -26,7 +26,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
-import androidx.wear.tiles.proto.DimensionProto;
+import androidx.wear.protolayout.proto.DimensionProto;
 
 /** Builders for dimensions for layout elements. */
 public final class DimensionBuilders {
diff --git a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/LayoutElementBuilders.java b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/LayoutElementBuilders.java
index 15be15f..3a811ba 100644
--- a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/LayoutElementBuilders.java
+++ b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/LayoutElementBuilders.java
@@ -42,9 +42,9 @@
 import androidx.wear.tiles.TypeBuilders.BoolProp;
 import androidx.wear.tiles.TypeBuilders.Int32Prop;
 import androidx.wear.tiles.TypeBuilders.StringProp;
-import androidx.wear.tiles.proto.LayoutElementProto;
-import androidx.wear.tiles.proto.TypesProto;
-import androidx.wear.tiles.protobuf.InvalidProtocolBufferException;
+import androidx.wear.protolayout.proto.LayoutElementProto;
+import androidx.wear.protolayout.proto.TypesProto;
+import androidx.wear.protolayout.protobuf.InvalidProtocolBufferException;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ModifiersBuilders.java b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ModifiersBuilders.java
index 754d9a6..b3ced75 100644
--- a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ModifiersBuilders.java
+++ b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ModifiersBuilders.java
@@ -26,9 +26,9 @@
 import androidx.wear.tiles.ColorBuilders.ColorProp;
 import androidx.wear.tiles.DimensionBuilders.DpProp;
 import androidx.wear.tiles.TypeBuilders.BoolProp;
-import androidx.wear.tiles.proto.ModifiersProto;
-import androidx.wear.tiles.proto.TypesProto;
-import androidx.wear.tiles.protobuf.ByteString;
+import androidx.wear.protolayout.proto.ModifiersProto;
+import androidx.wear.protolayout.proto.TypesProto;
+import androidx.wear.protolayout.protobuf.ByteString;
 
 /** Builders for modifiers for composable layout elements. */
 public final class ModifiersBuilders {
diff --git a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ResourceBuilders.java b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ResourceBuilders.java
index 971a5c1..b062133 100644
--- a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ResourceBuilders.java
+++ b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/ResourceBuilders.java
@@ -29,9 +29,9 @@
 import androidx.annotation.Nullable;
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
-import androidx.wear.tiles.proto.ResourceProto;
-import androidx.wear.tiles.protobuf.ByteString;
-import androidx.wear.tiles.protobuf.InvalidProtocolBufferException;
+import androidx.wear.protolayout.proto.ResourceProto;
+import androidx.wear.protolayout.protobuf.ByteString;
+import androidx.wear.protolayout.protobuf.InvalidProtocolBufferException;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/StateBuilders.java b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/StateBuilders.java
index 37a8cbc..ba9a1c6 100644
--- a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/StateBuilders.java
+++ b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/StateBuilders.java
@@ -19,7 +19,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
-import androidx.wear.tiles.proto.StateProto;
+import androidx.wear.protolayout.proto.StateProto;
 
 /** Builders for state of a tile. */
 public final class StateBuilders {
diff --git a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TileBuilders.java b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TileBuilders.java
index 7200f76..dc56dd4 100644
--- a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TileBuilders.java
+++ b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TileBuilders.java
@@ -22,7 +22,7 @@
 import androidx.annotation.RestrictTo.Scope;
 import androidx.wear.tiles.TimelineBuilders.Timeline;
 import androidx.wear.tiles.proto.TileProto;
-import androidx.wear.tiles.proto.VersionProto.VersionInfo;
+import androidx.wear.protolayout.proto.VersionProto.VersionInfo;
 
 /** Builders for the components of a tile that can be rendered by a tile renderer. */
 public final class TileBuilders {
diff --git a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TileService.java b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TileService.java
index 72cdde0..1319e5f 100644
--- a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TileService.java
+++ b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TileService.java
@@ -39,7 +39,7 @@
 import androidx.wear.tiles.proto.EventProto;
 import androidx.wear.tiles.proto.RequestProto;
 import androidx.wear.tiles.proto.TileProto;
-import androidx.wear.tiles.protobuf.InvalidProtocolBufferException;
+import androidx.wear.protolayout.protobuf.InvalidProtocolBufferException;
 
 import com.google.common.util.concurrent.ListenableFuture;
 
diff --git a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TimelineBuilders.java b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TimelineBuilders.java
index 647d4cc..1f94c0d 100644
--- a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TimelineBuilders.java
+++ b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TimelineBuilders.java
@@ -23,7 +23,7 @@
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
 import androidx.wear.tiles.LayoutElementBuilders.Layout;
-import androidx.wear.tiles.proto.TimelineProto;
+import androidx.wear.protolayout.proto.TimelineProto;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TypeBuilders.java b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TypeBuilders.java
index 80ec6ac..69cf3db 100644
--- a/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TypeBuilders.java
+++ b/wear/tiles/tiles/src/main/java/androidx/wear/tiles/TypeBuilders.java
@@ -21,7 +21,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
-import androidx.wear.tiles.proto.TypesProto;
+import androidx.wear.protolayout.proto.TypesProto;
 
 /** Builders for extensible primitive types used by layout elements. */
 public final class TypeBuilders {
diff --git a/wear/tiles/tiles/src/test/java/androidx/wear/tiles/ResourcesDataTest.java b/wear/tiles/tiles/src/test/java/androidx/wear/tiles/ResourcesDataTest.java
index 9465918..cdbb5a9 100644
--- a/wear/tiles/tiles/src/test/java/androidx/wear/tiles/ResourcesDataTest.java
+++ b/wear/tiles/tiles/src/test/java/androidx/wear/tiles/ResourcesDataTest.java
@@ -20,7 +20,7 @@
 
 import android.os.Parcel;
 
-import androidx.wear.tiles.proto.ResourceProto.Resources;
+import androidx.wear.protolayout.proto.ResourceProto.Resources;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/wear/tiles/tiles/src/test/java/androidx/wear/tiles/TileServiceTest.java b/wear/tiles/tiles/src/test/java/androidx/wear/tiles/TileServiceTest.java
index a4e00d1..d6bf3f6 100644
--- a/wear/tiles/tiles/src/test/java/androidx/wear/tiles/TileServiceTest.java
+++ b/wear/tiles/tiles/src/test/java/androidx/wear/tiles/TileServiceTest.java
@@ -34,7 +34,7 @@
 import androidx.wear.tiles.TileBuilders.Version;
 import androidx.wear.tiles.proto.EventProto;
 import androidx.wear.tiles.proto.RequestProto;
-import androidx.wear.tiles.proto.ResourceProto.Resources;
+import androidx.wear.protolayout.proto.ResourceProto.Resources;
 import androidx.wear.tiles.proto.TileProto.Tile;
 
 import com.google.common.truth.Expect;