Update Emoji to beta01

Bug: 148299613
Test: ./gradlew checkApi verifyDependencyVersions
Change-Id: I72ccfb06016e1c805f8392a740d8c41fdd3049f0
diff --git a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
index 3486110..3175ea0 100644
--- a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
@@ -56,7 +56,7 @@
     val DRAWERLAYOUT = Version("1.1.0-alpha05")
     val DYNAMICANIMATION = Version("1.1.0-alpha04")
     val DYNAMICANIMATION_KTX = Version("1.0.0-alpha04")
-    val EMOJI = Version("1.1.0-alpha02")
+    val EMOJI = Version("1.1.0-beta01")
     val ENTERPRISE = Version("1.1.0-alpha01")
     val EXIFINTERFACE = Version("1.3.0-alpha02")
     val FRAGMENT = Version("1.3.0-alpha02")
diff --git a/emoji/appcompat/api/1.1.0-beta01.txt b/emoji/appcompat/api/1.1.0-beta01.txt
new file mode 100644
index 0000000..a164fb7
--- /dev/null
+++ b/emoji/appcompat/api/1.1.0-beta01.txt
@@ -0,0 +1,25 @@
+// Signature format: 3.0
+package androidx.emoji.widget {
+
+  public class EmojiAppCompatButton extends androidx.appcompat.widget.AppCompatButton {
+    ctor public EmojiAppCompatButton(android.content.Context!);
+    ctor public EmojiAppCompatButton(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiAppCompatButton(android.content.Context!, android.util.AttributeSet!, int);
+  }
+
+  public class EmojiAppCompatEditText extends androidx.appcompat.widget.AppCompatEditText {
+    ctor public EmojiAppCompatEditText(android.content.Context!);
+    ctor public EmojiAppCompatEditText(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiAppCompatEditText(android.content.Context!, android.util.AttributeSet!, int);
+    method public int getMaxEmojiCount();
+    method public void setMaxEmojiCount(@IntRange(from=0) int);
+  }
+
+  public class EmojiAppCompatTextView extends androidx.appcompat.widget.AppCompatTextView {
+    ctor public EmojiAppCompatTextView(android.content.Context!);
+    ctor public EmojiAppCompatTextView(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiAppCompatTextView(android.content.Context!, android.util.AttributeSet!, int);
+  }
+
+}
+
diff --git a/emoji/appcompat/api/public_plus_experimental_1.1.0-beta01.txt b/emoji/appcompat/api/public_plus_experimental_1.1.0-beta01.txt
new file mode 100644
index 0000000..a164fb7
--- /dev/null
+++ b/emoji/appcompat/api/public_plus_experimental_1.1.0-beta01.txt
@@ -0,0 +1,25 @@
+// Signature format: 3.0
+package androidx.emoji.widget {
+
+  public class EmojiAppCompatButton extends androidx.appcompat.widget.AppCompatButton {
+    ctor public EmojiAppCompatButton(android.content.Context!);
+    ctor public EmojiAppCompatButton(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiAppCompatButton(android.content.Context!, android.util.AttributeSet!, int);
+  }
+
+  public class EmojiAppCompatEditText extends androidx.appcompat.widget.AppCompatEditText {
+    ctor public EmojiAppCompatEditText(android.content.Context!);
+    ctor public EmojiAppCompatEditText(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiAppCompatEditText(android.content.Context!, android.util.AttributeSet!, int);
+    method public int getMaxEmojiCount();
+    method public void setMaxEmojiCount(@IntRange(from=0) int);
+  }
+
+  public class EmojiAppCompatTextView extends androidx.appcompat.widget.AppCompatTextView {
+    ctor public EmojiAppCompatTextView(android.content.Context!);
+    ctor public EmojiAppCompatTextView(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiAppCompatTextView(android.content.Context!, android.util.AttributeSet!, int);
+  }
+
+}
+
diff --git a/emoji/appcompat/api/res-1.1.0-beta01.txt b/emoji/appcompat/api/res-1.1.0-beta01.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/emoji/appcompat/api/res-1.1.0-beta01.txt
diff --git a/emoji/appcompat/api/restricted_1.1.0-beta01.txt b/emoji/appcompat/api/restricted_1.1.0-beta01.txt
new file mode 100644
index 0000000..a164fb7
--- /dev/null
+++ b/emoji/appcompat/api/restricted_1.1.0-beta01.txt
@@ -0,0 +1,25 @@
+// Signature format: 3.0
+package androidx.emoji.widget {
+
+  public class EmojiAppCompatButton extends androidx.appcompat.widget.AppCompatButton {
+    ctor public EmojiAppCompatButton(android.content.Context!);
+    ctor public EmojiAppCompatButton(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiAppCompatButton(android.content.Context!, android.util.AttributeSet!, int);
+  }
+
+  public class EmojiAppCompatEditText extends androidx.appcompat.widget.AppCompatEditText {
+    ctor public EmojiAppCompatEditText(android.content.Context!);
+    ctor public EmojiAppCompatEditText(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiAppCompatEditText(android.content.Context!, android.util.AttributeSet!, int);
+    method public int getMaxEmojiCount();
+    method public void setMaxEmojiCount(@IntRange(from=0) int);
+  }
+
+  public class EmojiAppCompatTextView extends androidx.appcompat.widget.AppCompatTextView {
+    ctor public EmojiAppCompatTextView(android.content.Context!);
+    ctor public EmojiAppCompatTextView(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiAppCompatTextView(android.content.Context!, android.util.AttributeSet!, int);
+  }
+
+}
+
diff --git a/emoji/bundled/api/1.1.0-beta01.txt b/emoji/bundled/api/1.1.0-beta01.txt
new file mode 100644
index 0000000..7fe3afc
--- /dev/null
+++ b/emoji/bundled/api/1.1.0-beta01.txt
@@ -0,0 +1,9 @@
+// Signature format: 3.0
+package androidx.emoji.bundled {
+
+  public class BundledEmojiCompatConfig extends androidx.emoji.text.EmojiCompat.Config {
+    ctor public BundledEmojiCompatConfig(android.content.Context);
+  }
+
+}
+
diff --git a/emoji/bundled/api/public_plus_experimental_1.1.0-beta01.txt b/emoji/bundled/api/public_plus_experimental_1.1.0-beta01.txt
new file mode 100644
index 0000000..7fe3afc
--- /dev/null
+++ b/emoji/bundled/api/public_plus_experimental_1.1.0-beta01.txt
@@ -0,0 +1,9 @@
+// Signature format: 3.0
+package androidx.emoji.bundled {
+
+  public class BundledEmojiCompatConfig extends androidx.emoji.text.EmojiCompat.Config {
+    ctor public BundledEmojiCompatConfig(android.content.Context);
+  }
+
+}
+
diff --git a/emoji/bundled/api/res-1.1.0-beta01.txt b/emoji/bundled/api/res-1.1.0-beta01.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/emoji/bundled/api/res-1.1.0-beta01.txt
diff --git a/emoji/bundled/api/restricted_1.1.0-beta01.txt b/emoji/bundled/api/restricted_1.1.0-beta01.txt
new file mode 100644
index 0000000..7fe3afc
--- /dev/null
+++ b/emoji/bundled/api/restricted_1.1.0-beta01.txt
@@ -0,0 +1,9 @@
+// Signature format: 3.0
+package androidx.emoji.bundled {
+
+  public class BundledEmojiCompatConfig extends androidx.emoji.text.EmojiCompat.Config {
+    ctor public BundledEmojiCompatConfig(android.content.Context);
+  }
+
+}
+
diff --git a/emoji/core/api/1.1.0-beta01.txt b/emoji/core/api/1.1.0-beta01.txt
new file mode 100644
index 0000000..f25122c
--- /dev/null
+++ b/emoji/core/api/1.1.0-beta01.txt
@@ -0,0 +1,142 @@
+// Signature format: 3.0
+package androidx.emoji.text {
+
+  @AnyThread public class EmojiCompat {
+    method public static androidx.emoji.text.EmojiCompat! get();
+    method public String getAssetSignature();
+    method public int getLoadState();
+    method public static boolean handleDeleteSurroundingText(android.view.inputmethod.InputConnection, android.text.Editable, @IntRange(from=0) int, @IntRange(from=0) int, boolean);
+    method public static boolean handleOnKeyDown(android.text.Editable, int, android.view.KeyEvent!);
+    method public boolean hasEmojiGlyph(CharSequence);
+    method public boolean hasEmojiGlyph(CharSequence, @IntRange(from=0) int);
+    method public static androidx.emoji.text.EmojiCompat! init(androidx.emoji.text.EmojiCompat.Config);
+    method public void load();
+    method @CheckResult public CharSequence! process(CharSequence);
+    method @CheckResult public CharSequence! process(CharSequence, @IntRange(from=0) int, @IntRange(from=0) int);
+    method @CheckResult public CharSequence! process(CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int);
+    method @CheckResult public CharSequence! process(CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, int);
+    method public void registerInitCallback(androidx.emoji.text.EmojiCompat.InitCallback);
+    method public void unregisterInitCallback(androidx.emoji.text.EmojiCompat.InitCallback);
+    field public static final String EDITOR_INFO_METAVERSION_KEY = "android.support.text.emoji.emojiCompat_metadataVersion";
+    field public static final String EDITOR_INFO_REPLACE_ALL_KEY = "android.support.text.emoji.emojiCompat_replaceAll";
+    field public static final int LOAD_STATE_DEFAULT = 3; // 0x3
+    field public static final int LOAD_STATE_FAILED = 2; // 0x2
+    field public static final int LOAD_STATE_LOADING = 0; // 0x0
+    field public static final int LOAD_STATE_SUCCEEDED = 1; // 0x1
+    field public static final int LOAD_STRATEGY_DEFAULT = 0; // 0x0
+    field public static final int LOAD_STRATEGY_MANUAL = 1; // 0x1
+    field public static final int REPLACE_STRATEGY_ALL = 1; // 0x1
+    field public static final int REPLACE_STRATEGY_DEFAULT = 0; // 0x0
+    field public static final int REPLACE_STRATEGY_NON_EXISTENT = 2; // 0x2
+  }
+
+  public abstract static class EmojiCompat.Config {
+    ctor protected EmojiCompat.Config(androidx.emoji.text.EmojiCompat.MetadataRepoLoader);
+    method protected final androidx.emoji.text.EmojiCompat.MetadataRepoLoader! getMetadataRepoLoader();
+    method public androidx.emoji.text.EmojiCompat.Config! registerInitCallback(androidx.emoji.text.EmojiCompat.InitCallback);
+    method public androidx.emoji.text.EmojiCompat.Config! setEmojiSpanIndicatorColor(@ColorInt int);
+    method public androidx.emoji.text.EmojiCompat.Config! setEmojiSpanIndicatorEnabled(boolean);
+    method public androidx.emoji.text.EmojiCompat.Config! setMetadataLoadStrategy(int);
+    method public androidx.emoji.text.EmojiCompat.Config! setReplaceAll(boolean);
+    method public androidx.emoji.text.EmojiCompat.Config! setUseEmojiAsDefaultStyle(boolean);
+    method public androidx.emoji.text.EmojiCompat.Config! setUseEmojiAsDefaultStyle(boolean, java.util.List<java.lang.Integer!>?);
+    method public androidx.emoji.text.EmojiCompat.Config! unregisterInitCallback(androidx.emoji.text.EmojiCompat.InitCallback);
+  }
+
+  public abstract static class EmojiCompat.InitCallback {
+    ctor public EmojiCompat.InitCallback();
+    method public void onFailed(Throwable?);
+    method public void onInitialized();
+  }
+
+  public static interface EmojiCompat.MetadataRepoLoader {
+    method public void load(androidx.emoji.text.EmojiCompat.MetadataRepoLoaderCallback);
+  }
+
+  public abstract static class EmojiCompat.MetadataRepoLoaderCallback {
+    ctor public EmojiCompat.MetadataRepoLoaderCallback();
+    method public abstract void onFailed(Throwable?);
+    method public abstract void onLoaded(androidx.emoji.text.MetadataRepo);
+  }
+
+  @RequiresApi(19) public abstract class EmojiSpan extends android.text.style.ReplacementSpan {
+    method public int getSize(android.graphics.Paint, CharSequence!, int, int, android.graphics.Paint.FontMetricsInt!);
+  }
+
+  public class FontRequestEmojiCompatConfig extends androidx.emoji.text.EmojiCompat.Config {
+    ctor public FontRequestEmojiCompatConfig(android.content.Context, androidx.core.provider.FontRequest);
+    method public androidx.emoji.text.FontRequestEmojiCompatConfig! setHandler(android.os.Handler!);
+    method public androidx.emoji.text.FontRequestEmojiCompatConfig! setRetryPolicy(androidx.emoji.text.FontRequestEmojiCompatConfig.RetryPolicy!);
+  }
+
+  public static class FontRequestEmojiCompatConfig.ExponentialBackoffRetryPolicy extends androidx.emoji.text.FontRequestEmojiCompatConfig.RetryPolicy {
+    ctor public FontRequestEmojiCompatConfig.ExponentialBackoffRetryPolicy(long);
+    method public long getRetryDelay();
+  }
+
+  public abstract static class FontRequestEmojiCompatConfig.RetryPolicy {
+    ctor public FontRequestEmojiCompatConfig.RetryPolicy();
+    method public abstract long getRetryDelay();
+  }
+
+  @AnyThread @RequiresApi(19) public final class MetadataRepo {
+    method public static androidx.emoji.text.MetadataRepo! create(android.graphics.Typeface, java.io.InputStream) throws java.io.IOException;
+    method public static androidx.emoji.text.MetadataRepo! create(android.graphics.Typeface, java.nio.ByteBuffer) throws java.io.IOException;
+    method public static androidx.emoji.text.MetadataRepo! create(android.content.res.AssetManager, String!) throws java.io.IOException;
+  }
+
+}
+
+package androidx.emoji.widget {
+
+  public class EmojiButton extends android.widget.Button {
+    ctor public EmojiButton(android.content.Context!);
+    ctor public EmojiButton(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiButton(android.content.Context!, android.util.AttributeSet!, int);
+    ctor @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public EmojiButton(android.content.Context!, android.util.AttributeSet!, int, int);
+  }
+
+  public class EmojiEditText extends android.widget.EditText {
+    ctor public EmojiEditText(android.content.Context!);
+    ctor public EmojiEditText(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiEditText(android.content.Context!, android.util.AttributeSet!, int);
+    ctor @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public EmojiEditText(android.content.Context!, android.util.AttributeSet!, int, int);
+    method public int getMaxEmojiCount();
+    method public void setMaxEmojiCount(@IntRange(from=0) int);
+  }
+
+  public final class EmojiEditTextHelper {
+    ctor public EmojiEditTextHelper(android.widget.EditText);
+    method public android.text.method.KeyListener getKeyListener(android.text.method.KeyListener);
+    method public int getMaxEmojiCount();
+    method public android.view.inputmethod.InputConnection? onCreateInputConnection(android.view.inputmethod.InputConnection?, android.view.inputmethod.EditorInfo);
+    method public void setMaxEmojiCount(@IntRange(from=0) int);
+  }
+
+  public class EmojiExtractTextLayout extends android.widget.LinearLayout {
+    ctor public EmojiExtractTextLayout(android.content.Context!);
+    ctor public EmojiExtractTextLayout(android.content.Context!, android.util.AttributeSet?);
+    ctor public EmojiExtractTextLayout(android.content.Context!, android.util.AttributeSet?, int);
+    ctor @RequiresApi(api=android.os.Build.VERSION_CODES.LOLLIPOP) public EmojiExtractTextLayout(android.content.Context!, android.util.AttributeSet!, int, int);
+    method public int getEmojiReplaceStrategy();
+    method public void onUpdateExtractingViews(android.inputmethodservice.InputMethodService!, android.view.inputmethod.EditorInfo!);
+    method public void setEmojiReplaceStrategy(int);
+  }
+
+  public class EmojiTextView extends android.widget.TextView {
+    ctor public EmojiTextView(android.content.Context!);
+    ctor public EmojiTextView(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiTextView(android.content.Context!, android.util.AttributeSet!, int);
+    ctor @RequiresApi(api=android.os.Build.VERSION_CODES.LOLLIPOP) public EmojiTextView(android.content.Context!, android.util.AttributeSet!, int, int);
+  }
+
+  public final class EmojiTextViewHelper {
+    ctor public EmojiTextViewHelper(android.widget.TextView);
+    method public android.text.InputFilter![] getFilters(android.text.InputFilter![]);
+    method public void setAllCaps(boolean);
+    method public void updateTransformationMethod();
+    method public android.text.method.TransformationMethod? wrapTransformationMethod(android.text.method.TransformationMethod?);
+  }
+
+}
+
diff --git a/emoji/core/api/public_plus_experimental_1.1.0-beta01.txt b/emoji/core/api/public_plus_experimental_1.1.0-beta01.txt
new file mode 100644
index 0000000..f25122c
--- /dev/null
+++ b/emoji/core/api/public_plus_experimental_1.1.0-beta01.txt
@@ -0,0 +1,142 @@
+// Signature format: 3.0
+package androidx.emoji.text {
+
+  @AnyThread public class EmojiCompat {
+    method public static androidx.emoji.text.EmojiCompat! get();
+    method public String getAssetSignature();
+    method public int getLoadState();
+    method public static boolean handleDeleteSurroundingText(android.view.inputmethod.InputConnection, android.text.Editable, @IntRange(from=0) int, @IntRange(from=0) int, boolean);
+    method public static boolean handleOnKeyDown(android.text.Editable, int, android.view.KeyEvent!);
+    method public boolean hasEmojiGlyph(CharSequence);
+    method public boolean hasEmojiGlyph(CharSequence, @IntRange(from=0) int);
+    method public static androidx.emoji.text.EmojiCompat! init(androidx.emoji.text.EmojiCompat.Config);
+    method public void load();
+    method @CheckResult public CharSequence! process(CharSequence);
+    method @CheckResult public CharSequence! process(CharSequence, @IntRange(from=0) int, @IntRange(from=0) int);
+    method @CheckResult public CharSequence! process(CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int);
+    method @CheckResult public CharSequence! process(CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, int);
+    method public void registerInitCallback(androidx.emoji.text.EmojiCompat.InitCallback);
+    method public void unregisterInitCallback(androidx.emoji.text.EmojiCompat.InitCallback);
+    field public static final String EDITOR_INFO_METAVERSION_KEY = "android.support.text.emoji.emojiCompat_metadataVersion";
+    field public static final String EDITOR_INFO_REPLACE_ALL_KEY = "android.support.text.emoji.emojiCompat_replaceAll";
+    field public static final int LOAD_STATE_DEFAULT = 3; // 0x3
+    field public static final int LOAD_STATE_FAILED = 2; // 0x2
+    field public static final int LOAD_STATE_LOADING = 0; // 0x0
+    field public static final int LOAD_STATE_SUCCEEDED = 1; // 0x1
+    field public static final int LOAD_STRATEGY_DEFAULT = 0; // 0x0
+    field public static final int LOAD_STRATEGY_MANUAL = 1; // 0x1
+    field public static final int REPLACE_STRATEGY_ALL = 1; // 0x1
+    field public static final int REPLACE_STRATEGY_DEFAULT = 0; // 0x0
+    field public static final int REPLACE_STRATEGY_NON_EXISTENT = 2; // 0x2
+  }
+
+  public abstract static class EmojiCompat.Config {
+    ctor protected EmojiCompat.Config(androidx.emoji.text.EmojiCompat.MetadataRepoLoader);
+    method protected final androidx.emoji.text.EmojiCompat.MetadataRepoLoader! getMetadataRepoLoader();
+    method public androidx.emoji.text.EmojiCompat.Config! registerInitCallback(androidx.emoji.text.EmojiCompat.InitCallback);
+    method public androidx.emoji.text.EmojiCompat.Config! setEmojiSpanIndicatorColor(@ColorInt int);
+    method public androidx.emoji.text.EmojiCompat.Config! setEmojiSpanIndicatorEnabled(boolean);
+    method public androidx.emoji.text.EmojiCompat.Config! setMetadataLoadStrategy(int);
+    method public androidx.emoji.text.EmojiCompat.Config! setReplaceAll(boolean);
+    method public androidx.emoji.text.EmojiCompat.Config! setUseEmojiAsDefaultStyle(boolean);
+    method public androidx.emoji.text.EmojiCompat.Config! setUseEmojiAsDefaultStyle(boolean, java.util.List<java.lang.Integer!>?);
+    method public androidx.emoji.text.EmojiCompat.Config! unregisterInitCallback(androidx.emoji.text.EmojiCompat.InitCallback);
+  }
+
+  public abstract static class EmojiCompat.InitCallback {
+    ctor public EmojiCompat.InitCallback();
+    method public void onFailed(Throwable?);
+    method public void onInitialized();
+  }
+
+  public static interface EmojiCompat.MetadataRepoLoader {
+    method public void load(androidx.emoji.text.EmojiCompat.MetadataRepoLoaderCallback);
+  }
+
+  public abstract static class EmojiCompat.MetadataRepoLoaderCallback {
+    ctor public EmojiCompat.MetadataRepoLoaderCallback();
+    method public abstract void onFailed(Throwable?);
+    method public abstract void onLoaded(androidx.emoji.text.MetadataRepo);
+  }
+
+  @RequiresApi(19) public abstract class EmojiSpan extends android.text.style.ReplacementSpan {
+    method public int getSize(android.graphics.Paint, CharSequence!, int, int, android.graphics.Paint.FontMetricsInt!);
+  }
+
+  public class FontRequestEmojiCompatConfig extends androidx.emoji.text.EmojiCompat.Config {
+    ctor public FontRequestEmojiCompatConfig(android.content.Context, androidx.core.provider.FontRequest);
+    method public androidx.emoji.text.FontRequestEmojiCompatConfig! setHandler(android.os.Handler!);
+    method public androidx.emoji.text.FontRequestEmojiCompatConfig! setRetryPolicy(androidx.emoji.text.FontRequestEmojiCompatConfig.RetryPolicy!);
+  }
+
+  public static class FontRequestEmojiCompatConfig.ExponentialBackoffRetryPolicy extends androidx.emoji.text.FontRequestEmojiCompatConfig.RetryPolicy {
+    ctor public FontRequestEmojiCompatConfig.ExponentialBackoffRetryPolicy(long);
+    method public long getRetryDelay();
+  }
+
+  public abstract static class FontRequestEmojiCompatConfig.RetryPolicy {
+    ctor public FontRequestEmojiCompatConfig.RetryPolicy();
+    method public abstract long getRetryDelay();
+  }
+
+  @AnyThread @RequiresApi(19) public final class MetadataRepo {
+    method public static androidx.emoji.text.MetadataRepo! create(android.graphics.Typeface, java.io.InputStream) throws java.io.IOException;
+    method public static androidx.emoji.text.MetadataRepo! create(android.graphics.Typeface, java.nio.ByteBuffer) throws java.io.IOException;
+    method public static androidx.emoji.text.MetadataRepo! create(android.content.res.AssetManager, String!) throws java.io.IOException;
+  }
+
+}
+
+package androidx.emoji.widget {
+
+  public class EmojiButton extends android.widget.Button {
+    ctor public EmojiButton(android.content.Context!);
+    ctor public EmojiButton(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiButton(android.content.Context!, android.util.AttributeSet!, int);
+    ctor @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public EmojiButton(android.content.Context!, android.util.AttributeSet!, int, int);
+  }
+
+  public class EmojiEditText extends android.widget.EditText {
+    ctor public EmojiEditText(android.content.Context!);
+    ctor public EmojiEditText(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiEditText(android.content.Context!, android.util.AttributeSet!, int);
+    ctor @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public EmojiEditText(android.content.Context!, android.util.AttributeSet!, int, int);
+    method public int getMaxEmojiCount();
+    method public void setMaxEmojiCount(@IntRange(from=0) int);
+  }
+
+  public final class EmojiEditTextHelper {
+    ctor public EmojiEditTextHelper(android.widget.EditText);
+    method public android.text.method.KeyListener getKeyListener(android.text.method.KeyListener);
+    method public int getMaxEmojiCount();
+    method public android.view.inputmethod.InputConnection? onCreateInputConnection(android.view.inputmethod.InputConnection?, android.view.inputmethod.EditorInfo);
+    method public void setMaxEmojiCount(@IntRange(from=0) int);
+  }
+
+  public class EmojiExtractTextLayout extends android.widget.LinearLayout {
+    ctor public EmojiExtractTextLayout(android.content.Context!);
+    ctor public EmojiExtractTextLayout(android.content.Context!, android.util.AttributeSet?);
+    ctor public EmojiExtractTextLayout(android.content.Context!, android.util.AttributeSet?, int);
+    ctor @RequiresApi(api=android.os.Build.VERSION_CODES.LOLLIPOP) public EmojiExtractTextLayout(android.content.Context!, android.util.AttributeSet!, int, int);
+    method public int getEmojiReplaceStrategy();
+    method public void onUpdateExtractingViews(android.inputmethodservice.InputMethodService!, android.view.inputmethod.EditorInfo!);
+    method public void setEmojiReplaceStrategy(int);
+  }
+
+  public class EmojiTextView extends android.widget.TextView {
+    ctor public EmojiTextView(android.content.Context!);
+    ctor public EmojiTextView(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiTextView(android.content.Context!, android.util.AttributeSet!, int);
+    ctor @RequiresApi(api=android.os.Build.VERSION_CODES.LOLLIPOP) public EmojiTextView(android.content.Context!, android.util.AttributeSet!, int, int);
+  }
+
+  public final class EmojiTextViewHelper {
+    ctor public EmojiTextViewHelper(android.widget.TextView);
+    method public android.text.InputFilter![] getFilters(android.text.InputFilter![]);
+    method public void setAllCaps(boolean);
+    method public void updateTransformationMethod();
+    method public android.text.method.TransformationMethod? wrapTransformationMethod(android.text.method.TransformationMethod?);
+  }
+
+}
+
diff --git a/emoji/core/api/res-1.1.0-beta01.txt b/emoji/core/api/res-1.1.0-beta01.txt
new file mode 100644
index 0000000..8bc8423
--- /dev/null
+++ b/emoji/core/api/res-1.1.0-beta01.txt
@@ -0,0 +1,2 @@
+attr emojiReplaceStrategy
+attr maxEmojiCount
diff --git a/emoji/core/api/restricted_1.1.0-beta01.txt b/emoji/core/api/restricted_1.1.0-beta01.txt
new file mode 100644
index 0000000..0e7fd6b
--- /dev/null
+++ b/emoji/core/api/restricted_1.1.0-beta01.txt
@@ -0,0 +1,220 @@
+// Signature format: 3.0
+package androidx.emoji.text {
+
+  @AnyThread public class EmojiCompat {
+    method public static androidx.emoji.text.EmojiCompat! get();
+    method public String getAssetSignature();
+    method @androidx.emoji.text.EmojiCompat.LoadState public int getLoadState();
+    method public static boolean handleDeleteSurroundingText(android.view.inputmethod.InputConnection, android.text.Editable, @IntRange(from=0) int, @IntRange(from=0) int, boolean);
+    method public static boolean handleOnKeyDown(android.text.Editable, int, android.view.KeyEvent!);
+    method public boolean hasEmojiGlyph(CharSequence);
+    method public boolean hasEmojiGlyph(CharSequence, @IntRange(from=0) int);
+    method public static androidx.emoji.text.EmojiCompat! init(androidx.emoji.text.EmojiCompat.Config);
+    method public void load();
+    method @CheckResult public CharSequence! process(CharSequence);
+    method @CheckResult public CharSequence! process(CharSequence, @IntRange(from=0) int, @IntRange(from=0) int);
+    method @CheckResult public CharSequence! process(CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int);
+    method @CheckResult public CharSequence! process(CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, @androidx.emoji.text.EmojiCompat.ReplaceStrategy int);
+    method public void registerInitCallback(androidx.emoji.text.EmojiCompat.InitCallback);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @VisibleForTesting public static androidx.emoji.text.EmojiCompat! reset(androidx.emoji.text.EmojiCompat.Config);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @VisibleForTesting public static androidx.emoji.text.EmojiCompat! reset(androidx.emoji.text.EmojiCompat!);
+    method public void unregisterInitCallback(androidx.emoji.text.EmojiCompat.InitCallback);
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void updateEditorInfoAttrs(android.view.inputmethod.EditorInfo);
+    field public static final String EDITOR_INFO_METAVERSION_KEY = "android.support.text.emoji.emojiCompat_metadataVersion";
+    field public static final String EDITOR_INFO_REPLACE_ALL_KEY = "android.support.text.emoji.emojiCompat_replaceAll";
+    field public static final int LOAD_STATE_DEFAULT = 3; // 0x3
+    field public static final int LOAD_STATE_FAILED = 2; // 0x2
+    field public static final int LOAD_STATE_LOADING = 0; // 0x0
+    field public static final int LOAD_STATE_SUCCEEDED = 1; // 0x1
+    field public static final int LOAD_STRATEGY_DEFAULT = 0; // 0x0
+    field public static final int LOAD_STRATEGY_MANUAL = 1; // 0x1
+    field public static final int REPLACE_STRATEGY_ALL = 1; // 0x1
+    field public static final int REPLACE_STRATEGY_DEFAULT = 0; // 0x0
+    field public static final int REPLACE_STRATEGY_NON_EXISTENT = 2; // 0x2
+  }
+
+  public abstract static class EmojiCompat.Config {
+    ctor protected EmojiCompat.Config(androidx.emoji.text.EmojiCompat.MetadataRepoLoader);
+    method protected final androidx.emoji.text.EmojiCompat.MetadataRepoLoader! getMetadataRepoLoader();
+    method public androidx.emoji.text.EmojiCompat.Config! registerInitCallback(androidx.emoji.text.EmojiCompat.InitCallback);
+    method public androidx.emoji.text.EmojiCompat.Config! setEmojiSpanIndicatorColor(@ColorInt int);
+    method public androidx.emoji.text.EmojiCompat.Config! setEmojiSpanIndicatorEnabled(boolean);
+    method public androidx.emoji.text.EmojiCompat.Config! setMetadataLoadStrategy(@androidx.emoji.text.EmojiCompat.LoadStrategy int);
+    method public androidx.emoji.text.EmojiCompat.Config! setReplaceAll(boolean);
+    method public androidx.emoji.text.EmojiCompat.Config! setUseEmojiAsDefaultStyle(boolean);
+    method public androidx.emoji.text.EmojiCompat.Config! setUseEmojiAsDefaultStyle(boolean, java.util.List<java.lang.Integer!>?);
+    method public androidx.emoji.text.EmojiCompat.Config! unregisterInitCallback(androidx.emoji.text.EmojiCompat.InitCallback);
+  }
+
+  public abstract static class EmojiCompat.InitCallback {
+    ctor public EmojiCompat.InitCallback();
+    method public void onFailed(Throwable?);
+    method public void onInitialized();
+  }
+
+  @IntDef({androidx.emoji.text.EmojiCompat.LOAD_STATE_DEFAULT, androidx.emoji.text.EmojiCompat.LOAD_STATE_LOADING, androidx.emoji.text.EmojiCompat.LOAD_STATE_SUCCEEDED, androidx.emoji.text.EmojiCompat.LOAD_STATE_FAILED}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EmojiCompat.LoadState {
+  }
+
+  @IntDef({androidx.emoji.text.EmojiCompat.LOAD_STRATEGY_DEFAULT, androidx.emoji.text.EmojiCompat.LOAD_STRATEGY_MANUAL}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EmojiCompat.LoadStrategy {
+  }
+
+  public static interface EmojiCompat.MetadataRepoLoader {
+    method public void load(androidx.emoji.text.EmojiCompat.MetadataRepoLoaderCallback);
+  }
+
+  public abstract static class EmojiCompat.MetadataRepoLoaderCallback {
+    ctor public EmojiCompat.MetadataRepoLoaderCallback();
+    method public abstract void onFailed(Throwable?);
+    method public abstract void onLoaded(androidx.emoji.text.MetadataRepo);
+  }
+
+  @IntDef({androidx.emoji.text.EmojiCompat.REPLACE_STRATEGY_DEFAULT, androidx.emoji.text.EmojiCompat.REPLACE_STRATEGY_NON_EXISTENT, androidx.emoji.text.EmojiCompat.REPLACE_STRATEGY_ALL}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EmojiCompat.ReplaceStrategy {
+  }
+
+  @AnyThread @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class EmojiMetadata {
+    method public void draw(android.graphics.Canvas, float, float, android.graphics.Paint);
+    method public int getCodepointAt(int);
+    method public int getCodepointsLength();
+    method public short getCompatAdded();
+    method @androidx.emoji.text.EmojiMetadata.HasGlyph public int getHasGlyph();
+    method public short getHeight();
+    method public int getId();
+    method public short getSdkAdded();
+    method public android.graphics.Typeface! getTypeface();
+    method public short getWidth();
+    method public boolean isDefaultEmoji();
+    method public void setHasGlyph(boolean);
+    field public static final int HAS_GLYPH_ABSENT = 1; // 0x1
+    field public static final int HAS_GLYPH_EXISTS = 2; // 0x2
+    field public static final int HAS_GLYPH_UNKNOWN = 0; // 0x0
+  }
+
+  @IntDef({androidx.emoji.text.EmojiMetadata.HAS_GLYPH_UNKNOWN, androidx.emoji.text.EmojiMetadata.HAS_GLYPH_ABSENT, androidx.emoji.text.EmojiMetadata.HAS_GLYPH_EXISTS}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface EmojiMetadata.HasGlyph {
+  }
+
+  @RequiresApi(19) public abstract class EmojiSpan extends android.text.style.ReplacementSpan {
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @VisibleForTesting public final int getId();
+    method public int getSize(android.graphics.Paint, CharSequence!, int, int, android.graphics.Paint.FontMetricsInt!);
+  }
+
+  public class FontRequestEmojiCompatConfig extends androidx.emoji.text.EmojiCompat.Config {
+    ctor public FontRequestEmojiCompatConfig(android.content.Context, androidx.core.provider.FontRequest);
+    ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public FontRequestEmojiCompatConfig(android.content.Context, androidx.core.provider.FontRequest, androidx.emoji.text.FontRequestEmojiCompatConfig.FontProviderHelper);
+    method public androidx.emoji.text.FontRequestEmojiCompatConfig! setHandler(android.os.Handler!);
+    method public androidx.emoji.text.FontRequestEmojiCompatConfig! setRetryPolicy(androidx.emoji.text.FontRequestEmojiCompatConfig.RetryPolicy!);
+  }
+
+  public static class FontRequestEmojiCompatConfig.ExponentialBackoffRetryPolicy extends androidx.emoji.text.FontRequestEmojiCompatConfig.RetryPolicy {
+    ctor public FontRequestEmojiCompatConfig.ExponentialBackoffRetryPolicy(long);
+    method public long getRetryDelay();
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static class FontRequestEmojiCompatConfig.FontProviderHelper {
+    ctor public FontRequestEmojiCompatConfig.FontProviderHelper();
+    method public android.graphics.Typeface! buildTypeface(android.content.Context, androidx.core.provider.FontsContractCompat.FontInfo) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public androidx.core.provider.FontsContractCompat.FontFamilyResult! fetchFonts(android.content.Context, androidx.core.provider.FontRequest) throws android.content.pm.PackageManager.NameNotFoundException;
+    method public void registerObserver(android.content.Context, android.net.Uri, android.database.ContentObserver);
+    method public void unregisterObserver(android.content.Context, android.database.ContentObserver);
+  }
+
+  public abstract static class FontRequestEmojiCompatConfig.RetryPolicy {
+    ctor public FontRequestEmojiCompatConfig.RetryPolicy();
+    method public abstract long getRetryDelay();
+  }
+
+  @AnyThread @RequiresApi(19) public final class MetadataRepo {
+    method public static androidx.emoji.text.MetadataRepo! create(android.graphics.Typeface, java.io.InputStream) throws java.io.IOException;
+    method public static androidx.emoji.text.MetadataRepo! create(android.graphics.Typeface, java.nio.ByteBuffer) throws java.io.IOException;
+    method public static androidx.emoji.text.MetadataRepo! create(android.content.res.AssetManager, String!) throws java.io.IOException;
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public char[]! getEmojiCharArray();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.text.emoji.flatbuffer.MetadataList! getMetadataList();
+  }
+
+  @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class TypefaceEmojiSpan extends androidx.emoji.text.EmojiSpan {
+    ctor public TypefaceEmojiSpan(androidx.emoji.text.EmojiMetadata!);
+    method public void draw(android.graphics.Canvas, CharSequence!, @IntRange(from=0) int, @IntRange(from=0) int, float, int, int, int, android.graphics.Paint);
+  }
+
+}
+
+package androidx.emoji.widget {
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class EditTextAttributeHelper {
+    ctor public EditTextAttributeHelper(android.view.View, android.util.AttributeSet!, int, int);
+    method public int getMaxEmojiCount();
+  }
+
+  public class EmojiButton extends android.widget.Button {
+    ctor public EmojiButton(android.content.Context!);
+    ctor public EmojiButton(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiButton(android.content.Context!, android.util.AttributeSet!, int);
+    ctor @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public EmojiButton(android.content.Context!, android.util.AttributeSet!, int, int);
+  }
+
+  public class EmojiEditText extends android.widget.EditText {
+    ctor public EmojiEditText(android.content.Context!);
+    ctor public EmojiEditText(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiEditText(android.content.Context!, android.util.AttributeSet!, int);
+    ctor @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public EmojiEditText(android.content.Context!, android.util.AttributeSet!, int, int);
+    method public int getMaxEmojiCount();
+    method public void setMaxEmojiCount(@IntRange(from=0) int);
+  }
+
+  public final class EmojiEditTextHelper {
+    ctor public EmojiEditTextHelper(android.widget.EditText);
+    method public android.text.method.KeyListener getKeyListener(android.text.method.KeyListener);
+    method public int getMaxEmojiCount();
+    method public android.view.inputmethod.InputConnection? onCreateInputConnection(android.view.inputmethod.InputConnection?, android.view.inputmethod.EditorInfo);
+    method public void setMaxEmojiCount(@IntRange(from=0) int);
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class EmojiExtractEditText extends android.inputmethodservice.ExtractEditText {
+    ctor public EmojiExtractEditText(android.content.Context!);
+    ctor public EmojiExtractEditText(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiExtractEditText(android.content.Context!, android.util.AttributeSet!, int);
+    ctor @RequiresApi(android.os.Build.VERSION_CODES.LOLLIPOP) public EmojiExtractEditText(android.content.Context!, android.util.AttributeSet!, int, int);
+    method public int getEmojiReplaceStrategy();
+    method public int getMaxEmojiCount();
+    method public void setEmojiReplaceStrategy(@androidx.emoji.text.EmojiCompat.ReplaceStrategy int);
+    method public void setMaxEmojiCount(@IntRange(from=0) int);
+  }
+
+  public class EmojiExtractTextLayout extends android.widget.LinearLayout {
+    ctor public EmojiExtractTextLayout(android.content.Context!);
+    ctor public EmojiExtractTextLayout(android.content.Context!, android.util.AttributeSet?);
+    ctor public EmojiExtractTextLayout(android.content.Context!, android.util.AttributeSet?, int);
+    ctor @RequiresApi(api=android.os.Build.VERSION_CODES.LOLLIPOP) public EmojiExtractTextLayout(android.content.Context!, android.util.AttributeSet!, int, int);
+    method public int getEmojiReplaceStrategy();
+    method public void onUpdateExtractingViews(android.inputmethodservice.InputMethodService!, android.view.inputmethod.EditorInfo!);
+    method public void setEmojiReplaceStrategy(@androidx.emoji.text.EmojiCompat.ReplaceStrategy int);
+  }
+
+  public class EmojiTextView extends android.widget.TextView {
+    ctor public EmojiTextView(android.content.Context!);
+    ctor public EmojiTextView(android.content.Context!, android.util.AttributeSet!);
+    ctor public EmojiTextView(android.content.Context!, android.util.AttributeSet!, int);
+    ctor @RequiresApi(api=android.os.Build.VERSION_CODES.LOLLIPOP) public EmojiTextView(android.content.Context!, android.util.AttributeSet!, int, int);
+  }
+
+  public final class EmojiTextViewHelper {
+    ctor public EmojiTextViewHelper(android.widget.TextView);
+    method public android.text.InputFilter![] getFilters(android.text.InputFilter![]);
+    method public void setAllCaps(boolean);
+    method public void updateTransformationMethod();
+    method public android.text.method.TransformationMethod? wrapTransformationMethod(android.text.method.TransformationMethod?);
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ExtractButtonCompat extends android.widget.Button {
+    ctor public ExtractButtonCompat(android.content.Context!);
+    ctor public ExtractButtonCompat(android.content.Context!, android.util.AttributeSet!);
+    ctor public ExtractButtonCompat(android.content.Context!, android.util.AttributeSet!, int);
+    ctor @RequiresApi(api=android.os.Build.VERSION_CODES.LOLLIPOP) public ExtractButtonCompat(android.content.Context!, android.util.AttributeSet!, int, int);
+  }
+
+  @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class SpannableBuilder extends android.text.SpannableStringBuilder {
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void beginBatchEdit();
+    method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void endBatchEdit();
+  }
+
+}
+
diff --git a/emoji/core/build.gradle b/emoji/core/build.gradle
index ba11a0f..13d830b 100644
--- a/emoji/core/build.gradle
+++ b/emoji/core/build.gradle
@@ -22,7 +22,7 @@
     // treats this as local jar and package it inside the aar.
     api files(configurations.repackage)
 
-    api("androidx.core:core:1.3.0-alpha01")
+    api(project(":core:core"))
     implementation("androidx.collection:collection:1.1.0")
 
     androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)