diff --git a/README.md b/README.md
index 52a0f259..fe0e5932 100644
--- a/README.md
+++ b/README.md
@@ -137,23 +137,25 @@ BasePopup配备完善的文档,建议您优先查阅文档。
### 更新日志 [(历史更新)](https://www.yuque.com/razerdp/basepopup/uyrsxx)
-* **【Snapshot】2.3.2-SNAPSHOT** (2021/05/13)
- * 修复屏幕旋转后Popup大小没更新的问题
- * 修复update(float,float)失效的问题
-* **【Snapshot】3.0.0-SNAPSHOT** (2021/05/14)
- * 升级提示:[关于BasePopup 3.0的破坏性更新说明](./Update_3.0.md)
- * 删除**BaseLazyPopupWindow**:往后不需要区分懒加载和正常的BasePopupWindow,统一依赖BasePopupWindow
- * 删除方法`onCreateConstructor`:该方法实际上是给BaseLazyPopupWindow使用的,现在没有了BaseLazyPopupWindow,自然不需要该方法
- * 【重要】删除方法`onCreateContentView`:该方法的删除将会影响所有的BasePopupWindow子类,您需要手动去改动
- * 该方法将会被`setContentView(@LayoutRes int layoutResID)`或`setContentView(final View view)`所代替,您需要修改其使用。
- * 当然,如果使用`setContentView(final View view)`,我们依然建议您用setContentView(createPopupById(layoutResID)),以便我们解析到正确的xml配置。
-* **【Snapshot】3.1.0-SNAPSHOT** (2021/05/27)
- * 增加api:`hideKeyboardOnShow(boolean)`,是否在BasePopup显示时收起键盘,默认收起
- * demo增加 issue 369测试用例
- * fixed [#369](https://github.com/razerdp/BasePopup/issues/369)
- * 蒙层现在只有点击的时候才会执行dismiss(之前是只判断action_up是否在蒙层内)
- * `onOutSideTouch`增加isMaskPressed标记
-
+* **【Release】3.1.0** (2021/05/28)
+ * 本次更新是破坏性更新,更新之前如果您仍处于2.x版本,请务必阅读以下两项事项:
+ * 由于JCenter已经停止服务,因此3.0版本开始将会迁移到MavenCentral,新的依赖groupId为【io.github.razerdp】,具体请查看上面的[环境依赖]((#环境依赖))
+ * 3.0版本是破坏性升级,影响范围为所有BasePopupWindow子类,但修改不会很多,具体请看[关于BasePopup 3.0的破坏性更新说明](./Update_3.0.md)
+ * 【优化】
+ * 增加api:`hideKeyboardOnShow(boolean)`,是否在BasePopup显示时收起键盘,默认收起
+ * demo增加 issue 369测试用例
+ * fixed [#369](https://github.com/razerdp/BasePopup/issues/369)
+ * 蒙层现在只有点击的时候才会执行dismiss(之前是只判断action_up是否在蒙层内)
+ * `onOutSideTouch`增加isMaskPressed标记
+ * 【Api修改】
+ * 删除**BaseLazyPopupWindow**:往后不需要区分懒加载和正常的BasePopupWindow,统一依赖BasePopupWindow
+ * 删除方法`onCreateConstructor`:该方法实际上是给BaseLazyPopupWindow使用的,现在没有了BaseLazyPopupWindow,自然不需要该方法
+ * 删除方法`onCreateContentView`:该方法的删除将会影响所有的BasePopupWindow子类,您需要手动去改动
+ * 该方法将会被`setContentView(@LayoutRes int layoutResID)`或`setContentView(final View view)`所代替,您需要修改其使用。
+ * 如果使用`setContentView(final View view)`,我们依然建议您用setContentView(createPopupById(layoutResID)),以便我们解析到正确的xml配置。
+ * 【修复】
+ * 修复屏幕旋转后Popup大小没更新的问题
+ * 修复`update(float,float)`失效的问题
diff --git a/README_V2_EN.md b/README_V2_EN.md
index 3a045296..7db9af7f 100644
--- a/README_V2_EN.md
+++ b/README_V2_EN.md
@@ -127,8 +127,25 @@ Reference document(CN):[**BasePopup manual**](https://www.yuque.com/razerdp/ba
**Snapshot dev log see dev branch:** [**branch-dev**](https://github.com/razerdp/BasePopup/tree/dev)
-* **【Snapshot】2.3.0** (2021/04/30)
- * Migration to maven central
+* **【Release】3.1.0** (2021/05/28)
+ * This update is a destructive update, so if you are still on version 2.x before updating, please make sure you read the following two notes.
+ * As JCenter is no longer in service, it will be migrated to MavenCentral starting with version 3.0. The new dependency groupId is `io.github.razerdp`, see [Download](#Download) above for details.
+ * Version 3.0 is a destructive update that affects all BasePopupWindow subclasses, but the changes will not be extensive, see [Note on destructive update to BasePopup 3.0](./Update_3.0.md)
+ * 【Optimise】
+ * Add api: `hideKeyboardOnShow(boolean)`, whether to put away the keyboard when BasePopup is displayed, default is put away
+ * demo adds issue 369 test cases
+ * fixed [#369](https://github.com/razerdp/BasePopup/issues/369)
+ * The mask now only performs a dismiss when it is clicked (previously it only determined if action_up was inside the mask)
+ * `onOutSideTouch` adds the `isMaskPressed` param
+ * 【Api Modification】
+ * Delete **BaseLazyPopupWindow**: henceforth there is no need to distinguish between lazy loading and normal BasePopupWindow, and the reliance on BasePopupWindow is uniform
+ * Remove the method `onCreateConstructor`: this method is actually for the BaseLazyPopupWindow and is not needed now that there is no more BaseLazyPopupWindow.
+ * Delete method `onCreateContentView`: the deletion of this method will affect all BasePopupWindow subclasses and you will need to change them manually
+ * This method will be replaced by `setContentView(@LayoutRes int layoutResID)` or `setContentView(final View view)`, which you will need to modify to use.
+ * If you use `setContentView(final View view)`, we still recommend that you use setContentView(createPopupById(layoutResID)) so that we parse to the correct xml configuration.
+ * 【Bug fixed】
+ * Fix Popup size not updating after screen rotation
+ * Fix `update(float,float)` not working
diff --git a/app/src/main/java/razerdp/demo/DemoActivity.java b/app/src/main/java/razerdp/demo/DemoActivity.java
index 28051aed..1288d451 100644
--- a/app/src/main/java/razerdp/demo/DemoActivity.java
+++ b/app/src/main/java/razerdp/demo/DemoActivity.java
@@ -12,17 +12,10 @@
import androidx.recyclerview.widget.LinearLayoutManager;
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
-import com.pgyersdk.update.DownloadFileListener;
-import com.pgyersdk.update.PgyUpdateManager;
-import com.pgyersdk.update.UpdateManagerListener;
-import com.pgyersdk.update.javabean.AppBean;
-import java.io.File;
import java.util.ArrayList;
import java.util.List;
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.LinearLayoutManager;
import butterknife.BindView;
import butterknife.OnClick;
import razerdp.basepopup.QuickPopupBuilder;
diff --git a/build.gradle b/build.gradle
index b8719230..242bd5d0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -39,7 +39,7 @@ ext {
minLibSdkVersion = 16
targetSdkVersion = 30
versionCode = 302
- versionName = '3.1.0-SNAPSHOT'
+ versionName = '3.1.0'
candy = false
group = 'io.github.razerdp'