Giter Club home page Giter Club logo

androidproject-kotlin's Introduction

我是一名热爱 Android 技术的程序员,平时爱造轮子,人送外号轮子哥

我的理想是让这个世界没有难开发的安卓项目,消灭一切难维护的代码。

androidproject-kotlin's People

Contributors

880634 avatar getactivity avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

androidproject-kotlin's Issues

直接引入base和weight库后dimen识别不了

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

直接引入base和weight库后dimen识别不了

  • 框架版本【必填】:直接下载的最新版本的

  • 问题描述【必填】:直接引入base和weight库后dimen识别不了

  • 复现步骤【必填】:新建项目直接引入base和weight库后dimen识别不了

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:红米note9

  • 出现问题的安卓版本【必填】:12

请回答

  • 是部分机型还是所有机型都会出现【必答】:部分

  • AndroidProject 最新的版本是否存在这个问题【必答】:是

  • 是否已经查阅框架文档还未能解决的【必答】:是

  • issue 是否有人曾提过类似的问题【必答】:否

  • 是否可以通过 AndroidProject 工程来复现该问题【必答】:否(排查一下是不是自己的项目代码写得有问题导致的)

  • 使用原生的权限 API 是否会出现该问题【必答】:否(排查一下是不是 AndroidProject 的代码存在问题导致的)

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频(根据需要提供,此项不强制)

  • 提供解决方案(如果已经解决了的话,此项不强制)

image
image
image

编译release的时候报错

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:V13.1

  • 问题描述【必填】:编译release的时候,或者打包release的时候报错:D:/MyDevelopmentSoft/android-studio/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.6.0/a40b8b22529b733892edf4b73468ce598bb17f04/kotlin-stdlib-1.6.0.jar!/META-INF/kotlin-stdlib.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.0.

  • 复现步骤【必填】:编译release的时候,或者打包release的时候,打出来的release包无法正常安装使用

  • 是否必现【必填】:是,升级了最新kotlin1.7.2也不行,应该是某处依赖了低版本kotlin,目前小菜无法解决,请大佬给以解决方案!!谢谢!!

  • 出现问题的手机信息【必填】:所有

  • 出现问题的安卓版本【必填】:所有

请回答

  • 是部分机型还是所有机型都会出现【必答】:全部

  • AndroidProject 最新的版本是否存在这个问题【必答】:是

  • 是否已经查阅框架文档还未能解决的【必答】:是

  • issue 是否有人曾提过类似的问题【必答】:否

  • 是否可以通过 AndroidProject 工程来复现该问题【必答】:是

  • 使用原生的权限 API 是否会出现该问题【必答】:否

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频16672857609695

  • 提供解决方案(如果已经解决了的话,此项不强制)

notifyItemRemoved导致的数组下标越界问题

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:13.2

  • 问题描述【必填】:notifyItemRemoved导致的数组下标越界问题

  • 复现步骤【必填】:调用 notifyItemRemoved 之后,如果你移除的刚好是倒数第二个数据,此时点击最后一条数据,会报索引越界

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:跟手机无关

  • 出现问题的安卓版本【必填】:跟安卓版本无关

请回答

  • 是部分机型还是所有机型都会出现【必答】:全部(例如:某为,某 Android 版本会出现)

  • AndroidProject 最新的版本是否存在这个问题【必答】:是(如果用的是旧版本的话,建议升级看问题是否还存在)

  • 是否已经查阅框架文档还未能解决的【必答】:否(文档会提供最常见的问题解答,可以看看是否有自己想要的)

  • issue 是否有人曾提过类似的问题【必答】:否(看看曾经有人提过类似的问题,先参考一下别人是怎么解决的)

  • 是否可以通过 AndroidProject 工程来复现该问题【必答】:是(排查一下是不是自己的项目代码写得有问题导致的)

  • 使用原生的权限 API 是否会出现该问题【必答】:是(排查一下是不是 AndroidProject 的代码存在问题导致的)

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频(根据需要提供,此项不强制)

  • 提供解决方案(如果已经解决了的话,此项不强制)

根据网上的文章,我在基类中做了部分调整,目前没有问题
image

编译release版时报错

问题描述

  • 框架版本【必填】:V13.2

  • 问题描述【必填】:编译release版时报错,C:/Users/me/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core-jvm/1.6.0/f3b8fd26c2e76d2f18cbc36aacb6e349fcb9fd5f/kotlinx-coroutines-core-jvm-1.6.0.jar!/META-INF/kotlinx-coroutines-core.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.4.0.

  • 复现步骤【必填】:编译release,或者打包release

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:

  • 出现问题的安卓版本【必填】: Android 12

我想咨询一下

gradle导入apply plugin: 'kotlin-android-extensions'
可以直接引用xml的id
现在还可以用嘛,我看到项目里并没有用

请问如何进行手机平板及折叠屏尺寸动态适配的修改

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

建议收集

  • issue 是否有人曾提过类似的问题?【必答】没有

  • 你觉得框架有什么不足之处?【必答】缺少手机平板尺寸适配的动态修改

  • 你觉得该怎么去完善会比较好?【非必答】

1,怎么修改demo中的基础尺寸设置
2,怎么适配折叠屏,折叠和展示,其尺寸比例差别较大,展开后屏幕尺寸接近1:1,如何进行动态修改;

无法改变手机底部导航栏的颜色

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:最新版

  • 问题描述【必填】:activity中设置底部导航栏的颜色,底部导航栏的颜色没变!

  • 复现步骤【必填】:activity中重写 override fun createStatusBarConfig(): ImmersionBar {
    return super.createStatusBarConfig()
    .navigationBarColor(R.color.black)
    } 颜色并未改变

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:小米10

  • 出现问题的安卓版本【必填】:安卓13

请回答

  • 是部分机型还是所有机型都会出现【必答】:部分(小米10)

  • AndroidProject 最新的版本是否存在这个问题【必答】:是

  • 是否已经查阅框架文档还未能解决的【必答】:是

  • issue 是否有人曾提过类似的问题【必答】:否

  • 是否可以通过 AndroidProject 工程来复现该问题【必答】:是

  • 使用原生的权限 API 是否会出现该问题【必答】:否

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频(根据需要提供,此项不强制)

  • 提供解决方案(如果已经解决了的话,此项不强制)

请问如何进行手机平板尺寸适配的修改

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:XXX

  • 问题描述【必填】:请问如何进行手机平板尺寸适配的修改

  • 复现步骤【必填】:XXX(注意:目前不受理没有复现步骤的 Bug 单)

  • 是否必现【必填】:填是/否

  • 出现问题的手机信息【必填】:请填写出现问题的品牌和机型

  • 出现问题的安卓版本【必填】:请填写出现问题的 Android 版本

请回答

  • 是部分机型还是所有机型都会出现【必答】:部分/全部(例如:某为,某 Android 版本会出现)

  • AndroidProject 最新的版本是否存在这个问题【必答】:是/否(如果用的是旧版本的话,建议升级看问题是否还存在)

  • 是否已经查阅框架文档还未能解决的【必答】:是/否(文档会提供最常见的问题解答,可以看看是否有自己想要的)

  • issue 是否有人曾提过类似的问题【必答】:是/否(看看曾经有人提过类似的问题,先参考一下别人是怎么解决的)

  • 是否可以通过 AndroidProject 工程来复现该问题【必答】:是/否(排查一下是不是自己的项目代码写得有问题导致的)

  • 使用原生的权限 API 是否会出现该问题【必答】:是/否(排查一下是不是 AndroidProject 的代码存在问题导致的)

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频(根据需要提供,此项不强制)

  • 提供解决方案(如果已经解决了的话,此项不强制)

android10以上系统图片裁剪后上传头像失败

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:V13.2

  • 问题描述【必填】:小米手机mix4,系统android11,个人主页上传头像裁剪后上传文件失败,

  • 复现步骤【必填】:点击上传头像,图片裁剪,上传失败,提示图片扩展名不被接受,debug发现header中的filename不是图片的filename,不带图片格式,所以服务器不接受。不清楚这个filename是怎么赋值的。issue上传了调试截图,大佬一看应该就明白

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:小米手机mix4

  • 出现问题的安卓版本【必填】:android11

请回答

  • 是部分机型还是所有机型都会出现【必答】:部分,mix4 Android11系统会出现,mix2 android9系统不出现,推断和存储分区有关

  • AndroidProject 最新的版本是否存在这个问题【必答】:是

  • 是否已经查阅框架文档还未能解决的【必答】:是

  • issue 是否有人曾提过类似的问题【必答】:否

  • 是否可以通过 AndroidProject 工程来复现该问题【必答】:不确定,因为这个是向服务器上传才出现的问题,AndroidProject 不能的上传图片

  • 使用原生的权限 API 是否会出现该问题【必答】:否(排查一下是不是 AndroidProject 的代码存在问题导致的)

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频(根据需要提供,此项不强制)

F4343D6B-486D-4e6f-A600-2F8E251CF7AE
A28999BC-8BE4-4654-A5B0-FAB27B9989A2

关于viewBinding支持的建议

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

建议收集

  • issue 是否有人曾提过类似的问题?【必答】没有

  • 你觉得框架有什么不足之处?【必答】目前还未支持viewBinding,控件还需要自己去findById很繁琐

  • 你觉得该怎么去完善会比较好?【非必答】基类添加viewBinding的支持

请严格按照 issue 模板来提问题,否则一律不受理

最近发现有很多人给我提 issue 没有认真按照模板上面的来填写,导致了在排查问题的过程中浪费了作者许多不必要的时间和精力,所以请后面提 issue 的人务必严格遵守,否则我不会受理,直接关闭 issue。

选择图片和发送验证码出现内存泄漏

┬───
│ GC Root: System class
│
├─ android.app.ActivityThread class
│    Leaking: NO (a class is never leaking)
│    ↓ static ActivityThread.sCurrentActivityThread
│                            ~~~~~~~~~~~~~~~~~~~~~~
├─ android.app.ActivityThread instance
│    Leaking: UNKNOWN
│    Retaining 106.3 kB in 2023 objects
│    mInitialApplication instance of com.hjq.demo.app.AppApplication
│    mSystemContext instance of android.app.ContextImpl
│    mSystemUiContext instance of android.app.ContextImpl
│    ↓ ActivityThread.mNewActivities
│                     ~~~~~~~~~~~~~~
├─ android.app.ActivityThread$ActivityClientRecord instance
│    Leaking: UNKNOWN
│    Retaining 88.6 kB in 1676 objects
│    activity instance of com.hjq.demo.ui.activity.ImageSelectActivity with
│    mDestroyed = false
│    ↓ ActivityThread$ActivityClientRecord.nextIdle
│                                          ~~~~~~~~
├─ android.app.ActivityThread$ActivityClientRecord instance
│    Leaking: UNKNOWN
│    Retaining 84.9 kB in 1622 objects
│    activity instance of com.hjq.demo.ui.activity.ImagePreviewActivity with
│    mDestroyed = true
│    ↓ ActivityThread$ActivityClientRecord.activity
│                                          ~~~~~~~~
╰→ com.hjq.demo.ui.activity.ImagePreviewActivity instance
​     Leaking: YES (ObjectWatcher was watching this because com.hjq.demo.ui.
​     activity.ImagePreviewActivity received Activity#onDestroy() callback and
​     Activity#mDestroyed is true)
​     Retaining 35.8 kB in 985 objects
​     key = c1ae8f60-3e89-47c5-b257-575db421cc9e
​     watchDurationMillis = 5212
​     retainedDurationMillis = 208
​     mApplication instance of com.hjq.demo.app.AppApplication
​     mBase instance of androidx.appcompat.view.ContextThemeWrapper

METADATA

Build.VERSION.SDK_INT: 29
Build.MANUFACTURER: OnePlus
LeakCanary version: 2.7
App process name: com.hjq.demo.debug
Stats: LruCache[maxSize=3000,hits=8232,misses=78989,hitRate=9%]
RandomAccess[bytes=4147609,reads=78989,travel=31284176847,range=19937136,size=27
967466]
Heap dump reason: 5 retained objects, app is visible
Analysis duration: 6211 ms
┬───
│ GC Root: System class
│
├─ android.app.ActivityThread class
│    Leaking: NO (a class is never leaking)
│    ↓ static ActivityThread.sCurrentActivityThread
│                            ~~~~~~~~~~~~~~~~~~~~~~
├─ android.app.ActivityThread instance
│    Leaking: UNKNOWN
│    Retaining 242.2 kB in 3674 objects
│    mInitialApplication instance of com.hjq.demo.app.AppApplication
│    mSystemContext instance of android.app.ContextImpl
│    mSystemUiContext instance of android.app.ContextImpl
│    ↓ ActivityThread.mNewActivities
│                     ~~~~~~~~~~~~~~
├─ android.app.ActivityThread$ActivityClientRecord instance
│    Leaking: UNKNOWN
│    Retaining 224.5 kB in 3327 objects
│    activity instance of com.hjq.demo.ui.activity.HomeActivity with mDestroyed
│    = false
│    ↓ ActivityThread$ActivityClientRecord.nextIdle
│                                          ~~~~~~~~
├─ android.app.ActivityThread$ActivityClientRecord instance
│    Leaking: UNKNOWN
│    Retaining 220.6 kB in 3270 objects
│    activity instance of com.hjq.demo.ui.activity.StatusActivity with
│    mDestroyed = true
│    ↓ ActivityThread$ActivityClientRecord.activity
│                                          ~~~~~~~~
╰→ com.hjq.demo.ui.activity.StatusActivity instance
​     Leaking: YES (ObjectWatcher was watching this because com.hjq.demo.ui.
​     activity.StatusActivity received Activity#onDestroy() callback and
​     Activity#mDestroyed is true)
​     Retaining 109.1 kB in 2382 objects
​     key = c9c20ec0-2472-429f-a975-f7357e90af1a
​     watchDurationMillis = 5211
​     retainedDurationMillis = 195
​     mApplication instance of com.hjq.demo.app.AppApplication
​     mBase instance of androidx.appcompat.view.ContextThemeWrapper

METADATA

Build.VERSION.SDK_INT: 29
Build.MANUFACTURER: OnePlus
LeakCanary version: 2.7
App process name: com.hjq.demo.debug
Count of retained yet cleared: 5 KeyedWeakReference instances
Stats: LruCache[maxSize=3000,hits=7783,misses=74983,hitRate=9%]
RandomAccess[bytes=3891975,reads=74983,travel=29736912157,range=19469856,size=27
502605]
Heap dump reason: 5 retained objects, app is visible
Analysis duration: 5973 ms

新建module提示错误

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:XXX

  • 问题描述【必填】:XXX

  • 复现步骤【必填】:XXX(注意:目前不受理没有复现步骤的 Bug 单)

  • 是否必现【必填】:填是/否

  • 出现问题的手机信息【必填】:请填写出现问题的品牌和机型

  • 出现问题的安卓版本【必填】:请填写出现问题的 Android 版本

请回答

  • 是部分机型还是所有机型都会出现【必答】:部分/全部(例如:某为,某 Android 版本会出现)

  • AndroidProject 最新的版本是否存在这个问题【必答】:是/否(如果用的是旧版本的话,建议升级看问题是否还存在)

  • 是否已经查阅框架文档还未能解决的【必答】:是/否(文档会提供最常见的问题解答,可以看看是否有自己想要的)

  • issue 是否有人曾提过类似的问题【必答】:是/否(看看曾经有人提过类似的问题,先参考一下别人是怎么解决的)

  • 是否可以通过 AndroidProject 工程来复现该问题【必答】:是/否(排查一下是不是自己的项目代码写得有问题导致的)

  • 使用原生的权限 API 是否会出现该问题【必答】:是/否(排查一下是不是 AndroidProject 的代码存在问题导致的)

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频(根据需要提供,此项不强制)

image
image

  • 提供解决方案(如果已经解决了的话,此项不强制)

后面还会更新这个中台吗

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

建议收集

  • issue 是否有人曾提过类似的问题?【必答】(一旦出现重复提问我将不会再次解答)

  • 你觉得框架有什么不足之处?【必答】(你可以描述框架有什么令你不满意的地方)

  • 你觉得该怎么去完善会比较好?【非必答】(你可以提供一下自己的想法或者做法供作者参考)

当我把compileSdkVersion和compileSdkVersion改为34的时候出现一个问题!

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:没有版本

  • 问题描述【必填】:当我把compileSdkVersion和compileSdkVersion改为34,run的时候提示Installation did not succeed. The application could not be installed: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED,我已经在清单文件里面将SplashActivity的标签下加了android:exported="true"

  • 复现步骤【必填】:先把compileSdkVersion和compileSdkVersion改为34,再在清单文件里面将SplashActivity的标签下加了android:exported="true",然后打包app

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:小米10

  • 出现问题的安卓版本【必填】:安卓13

请回答

  • 是部分机型还是所有机型都会出现【必答】:全部

  • AndroidProject 最新的版本是否存在这个问题【必答】:是

  • 是否已经查阅框架文档还未能解决的【必答】:是

  • issue 是否有人曾提过类似的问题【必答】:否

  • 是否可以通过 AndroidProject 工程来复现该问题【必答】:是

  • 使用原生的权限 API 是否会出现该问题【必答】:否

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频(根据需要提供,此项不强制)

  • 提供解决方案(如果已经解决了的话,此项不强制)

为什么构建成功后,运行项目,提示配置ndk

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

建议收集

image
这是截图

  • issue 是否有人曾提过类似的问题?【必答】(一旦出现重复提问我将不会再次解答)

  • 你觉得框架有什么不足之处?【必答】(你可以描述框架有什么令你不满意的地方)

  • 你觉得该怎么去完善会比较好?【非必答】(你可以提供一下自己的想法或者做法供作者参考)

WrapRecyclerView使用GridLayoutManager后addHeaderView可以单独一行吗?

问题描述

  • 框架版本【必填】:V13.2

  • 问题描述【必填】:使用WrapRecyclerView使用GridLayoutManager后addHeaderView现在是作为一个item方式增加到列表里面,如果想实现但是一行可以吗? 目前的效果如下面的截图。

  • 复现步骤【必填】:

        adapter = TrainAdapter(getAttachActivity()!!)
        adapter?.setOnItemClickListener(this)

        recyclerView?.adapter = adapter
        recyclerView?.addItemDecoration(GridSpaceDecoration(resources.getDimension(R.dimen.dp_5).toInt()))
        recyclerView?.layoutManager = GridLayoutManager(this.activity,2)

        val headerLayout: RelativeLayout? = recyclerView?.addHeaderView(R.layout.train_top_layout)

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:模拟器

  • 出现问题的安卓版本【必填】:Android11

请回答

  • 是部分机型还是所有机型都会出现【必答】:全部

  • AndroidProject 最新的版本是否存在这个问题【必答】:是

  • 是否已经查阅框架文档还未能解决的【必答】:是

  • issue 是否有人曾提过类似的问题【必答】:否

  • 是否可以通过 AndroidProject 工程来复现该问题【必答】:是

  • 使用原生的权限 API 是否会出现该问题【必答】:是

其他

效果截图:
image

OnScrimsListener 监听回调方法中控件参数明明传的是 this ,为什么是可空类型?

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

建议收集

  • issue 是否有人曾提过类似的问题?【必答】否

  • 你觉得框架有什么不足之处?【必答】比较疑惑 OnScrimsListener 监听的回调方法 onScrimsStateChange 中,控件参数明明传的是 this ,为什么是可空类型?

  • 你觉得该怎么去完善会比较好?【非必答】当前对象应该是不为空的吧,为什么要设计为可空的参数呢?直接非空不可以吗?

在点击注解切面定义中,连接点注解@Around("method() && @annotation(singleClick)"),在已经定义切点的情况下,是否可以直接使用@Around("method()")?

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

建议收集

  • issue 是否有人曾提过类似的问题?【必答】否

  • 你觉得框架有什么不足之处?【必答】无

  • 你觉得该怎么去完善会比较好?【非必答】(你可以提供一下自己的想法或者做法供作者参考)

Fatal Exception: java.lang.IllegalStateException: focus search returned a view that wasn't able to take focus!

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:13.2

  • 问题描述【必填】:Fatal Exception: java.lang.IllegalStateException: focus search returned a view that wasn't able to take focus!
    at android.widget.TextView.onKeyUp(TextView.java:8864)
    at android.view.KeyEvent.dispatch(KeyEvent.java:3383)
    at android.view.View.dispatchKeyEvent(View.java:13329)
    at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1912)
    at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1912)
    at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1912)
    at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1912)
    at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1912)
    at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1912)
    at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1912)
    at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1912)
    at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1912)
    at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1912)
    at com.android.internal.policy.DecorView.superDispatchKeyEvent(DecorView.java:685)
    at com.android.internal.policy.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1869)
    at android.app.Activity.dispatchKeyEvent(Activity.java:3447)
    at androidx.core.app.ComponentActivity.superDispatchKeyEvent(ComponentActivity.java:122)
    at androidx.core.view.KeyEventDispatcher.dispatchKeyEvent(KeyEventDispatcher.java:84)
    at androidx.core.app.ComponentActivity.dispatchKeyEvent(ComponentActivity.java:140)
    at androidx.appcompat.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:599)
    at com.chiquedoll.chiquedoll.view.activity.BaseActivity.dispatchKeyEvent(BaseActivity.java:654)
    at androidx.appcompat.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:59)
    at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.dispatchKeyEvent(AppCompatDelegateImpl.java:3089)
    at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:563)
    at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:6035)
    at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5890)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5343)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5396)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5362)
    at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5521)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5370)
    at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5578)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5343)
    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5396)
    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5362)
    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5370)
    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5343)
    at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:8405)
    at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:8338)
    at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:8291)
    at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:4980)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7073)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

  • 复现步骤【必填】:未知

  • 是否必现【必填】:否

  • 出现问题的手机信息【必填】:品牌:samsung
    型号:Galaxy S8+

  • 出现问题的安卓版本【必填】:Android 9

请回答

  • 是部分机型还是所有机型都会出现【必答】:未知

  • AndroidProject 最新的版本是否存在这个问题【必答】:是

  • 是否已经查阅框架文档还未能解决的【必答】:是

  • issue 是否有人曾提过类似的问题【必答】:否

  • 是否可以通过 AndroidProject 工程来复现该问题【必答】:否

  • 使用原生的权限 API 是否会出现该问题【必答】:是
    注: 出错误来自于BaseActivity中的dispatchKeyEvent 方法

希望增加recycleview样式支持

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

建议收集

  • issue 是否有人曾提过类似的问题?【必答】没有

  • 你觉得框架有什么不足之处?【必答】关于recyclerview可以增加多布局的封装

  • 你觉得该怎么去完善会比较好?【非必答】(你可以提供一下自己的想法或者做法供作者参考)

导入报错,目前找不到解决办法

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:v13.2

  • 问题描述【必填】:导入studio报错
    Build file 'D:\YG2\GITDEMO4\AndroidProject-Kotlin-master\app\build.gradle' line: 3
    A problem occurred evaluating project ':app'.

Failed to apply plugin 'kotlin-kapt'.
Extension with name 'kotlin' does not exist. Currently registered extension names: [ext, base, defaultArtifacts, sourceSets, reporting, java, javaToolchains, buildOutputs, android, androidComponents, aspectjx, kapt]

  • 复现步骤【必填】:每次导入都报错

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:Redmi

  • 出现问题的安卓版本【必填】:android10

请回答

  • 是部分机型还是所有机型都会出现【必答】:部分 目前只有一台手机

  • AndroidProject 最新的版本是否存在这个问题【必答】:是

  • 是否已经查阅框架文档还未能解决的【必答】:是

  • issue 是否有人曾提过类似的问题【必答】:否

  • 是否可以通过 AndroidProject 工程来复现该问题【必答】:是

  • 使用原生的权限 API 是否会出现该问题【必答】:是

建议升级gradle7,这版本对构建速度有优化

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

建议收集

  • issue 是否有人曾提过类似的问题?【必答】(一旦出现重复提问我将不会再次解答)

  • 你觉得框架有什么不足之处?【必答】(你可以描述框架有什么令你不满意的地方)

  • 建议升级gradle7,这版本对构建速度有优化

  • 你觉得该怎么去完善会比较好?【非必答】(你可以提供一下自己的想法或者做法供作者参考)

  • 升级下

proguard 配置引入 proguard-base.pro 打出来的包会比 getDefaultProguardFile('proguard-android-optimize.txt') 大 1M+

建议收集

  • issue 是否有人曾提过类似的问题?【必答】
    没有

  • 你觉得框架有什么不足之处?【必答】

    现在有两份 proguard 配置:

    配置 1
    proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-sdk.pro', 'proguard-app.pro'
    
    配置 2
    proguardFiles 'proguard-base.pro', 'proguard-sdk.pro', 'proguard-app.pro'
    

    其中 proguard-base.pro 是 base 模块 consumerProguardFiles 'proguard-base.pro' 方式引入的,配置 2 这么写只是方便对比。
    无意间发现,配置 2 打出来的包相比配置 1 打的包,会多出近 2M 左右大小。

  • 你觉得该怎么去完善会比较好?【非必答】
    阿轮,空了的话,可否优化一下 proguard 的配置,在不影响正常功能的前提下,控制一下打出包的大小。

DialogActivity有内存泄漏

2021-12-31 11:19:18.818 26711-27091/com.hjq.demo.debug D/LeakCanary: Analysis in progress, working on: PARSING_HEAP_DUMP
2021-12-31 11:19:18.833 26711-26711/com.hjq.demo.debug D/LeakCanary: Watching instance of android.widget.FrameLayout (android.widget.FrameLayout received View#onDetachedFromWindow() callback) with key 19406ca4-dc80-4796-b766-a2e5658e5a33
2021-12-31 11:19:19.964 26711-27091/com.hjq.demo.debug D/LeakCanary: Analysis in progress, working on: EXTRACTING_METADATA
2021-12-31 11:19:20.132 26711-27091/com.hjq.demo.debug D/LeakCanary: Analysis in progress, working on: FINDING_RETAINED_OBJECTS
2021-12-31 11:19:20.135 26711-27091/com.hjq.demo.debug D/LeakCanary: Analysis in progress, working on: FINDING_PATHS_TO_RETAINED_OBJECTS
2021-12-31 11:19:21.810 26711-26741/com.hjq.demo.debug D/LeakCanary: Setting up flushing for Thread[IntentService[HeapAnalyzerService],5,main]
2021-12-31 11:19:23.643 26711-27091/com.hjq.demo.debug D/LeakCanary: Analysis in progress, working on: FINDING_DOMINATORS
2021-12-31 11:19:23.968 26711-27091/com.hjq.demo.debug D/LeakCanary: Found 5 paths to retained objects, down to 2 after removing duplicated paths
2021-12-31 11:19:23.968 26711-27091/com.hjq.demo.debug D/LeakCanary: Analysis in progress, working on: INSPECTING_OBJECTS
2021-12-31 11:19:24.035 26711-27091/com.hjq.demo.debug D/LeakCanary: Analysis in progress, working on: COMPUTING_NATIVE_RETAINED_SIZE
2021-12-31 11:19:24.465 26711-27091/com.hjq.demo.debug D/LeakCanary: Analysis in progress, working on: COMPUTING_RETAINED_SIZE
2021-12-31 11:19:24.704 26711-27091/com.hjq.demo.debug D/LeakCanary: Analysis in progress, working on: BUILDING_LEAK_TRACES
2021-12-31 11:19:24.708 26711-27091/com.hjq.demo.debug D/LeakCanary: Analysis in progress, working on: REPORTING_HEAP_ANALYSIS
2021-12-31 11:19:24.727 26711-27091/com.hjq.demo.debug D/LeakCanary: ​
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ====================================
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: HEAP ANALYSIS RESULT
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ====================================
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: 2 APPLICATION LEAKS
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: References underlined with "~~~" are likely causes.
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: Learn more at https://squ.re/leaks.
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: 167056 bytes retained by leaking objects
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: Signature: e1c76f0955a7d673de751fa83bd6a78af3abee8
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ┬───
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ GC Root: System class
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ├─ android.app.ActivityThread class
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Leaking: NO (a class is never leaking)
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ↓ static ActivityThread.sCurrentActivityThread
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ~~~~~~~~~~~~~~~~~~~~~~
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ├─ android.app.ActivityThread instance
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Leaking: UNKNOWN
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Retaining 239.0 kB in 2844 objects
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ mInitialApplication instance of com.hjq.demo.app.AppApplication
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ mSystemContext instance of android.app.ContextImpl
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ mSystemUiContext instance of android.app.ContextImpl
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ↓ ActivityThread.mNewActivities
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ~~~~~~~~~~~~~~
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ├─ android.app.ActivityThread$ActivityClientRecord instance
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Leaking: UNKNOWN
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Retaining 217.7 kB in 2440 objects
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ activity instance of com.hjq.demo.ui.activity.HomeActivity with mDestroyed = false
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ↓ ActivityThread$ActivityClientRecord.nextIdle
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ~~~~~~~~
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ├─ android.app.ActivityThread$ActivityClientRecord instance
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Leaking: UNKNOWN
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Retaining 216.8 kB in 2420 objects
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ activity instance of com.hjq.demo.ui.activity.DialogActivity with mDestroyed = true
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ↓ ActivityThread$ActivityClientRecord.activity
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ~~~~~~~~
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ╰→ com.hjq.demo.ui.activity.DialogActivity instance
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ Leaking: YES (ObjectWatcher was watching this because com.hjq.demo.ui.activity.DialogActivity received
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ Activity#onDestroy() callback and Activity#mDestroyed is true)
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ Retaining 167.1 kB in 1704 objects
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ key = ab6130d5-08ca-4c2a-ae8a-16e0474e580b
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ watchDurationMillis = 5282
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ retainedDurationMillis = 276
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ mApplication instance of com.hjq.demo.app.AppApplication
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ mBase instance of androidx.appcompat.view.ContextThemeWrapper
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: 13770 bytes retained by leaking objects
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: Signature: 50acba0689afc849672bede23bb43bfdabd34b
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ┬───
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ GC Root: System class
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ├─ android.app.ActivityThread class
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Leaking: NO (a class is never leaking)
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ↓ static ActivityThread.sCurrentActivityThread
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ~~~~~~~~~~~~~~~~~~~~~~
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ├─ android.app.ActivityThread instance
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Leaking: UNKNOWN
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Retaining 239.0 kB in 2844 objects
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ mInitialApplication instance of com.hjq.demo.app.AppApplication
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ mSystemContext instance of android.app.ContextImpl
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ mSystemUiContext instance of android.app.ContextImpl
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ↓ ActivityThread.mNewActivities
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ~~~~~~~~~~~~~~
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ├─ android.app.ActivityThread$ActivityClientRecord instance
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Leaking: UNKNOWN
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Retaining 217.7 kB in 2440 objects
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ activity instance of com.hjq.demo.ui.activity.HomeActivity with mDestroyed = false
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ↓ ActivityThread$ActivityClientRecord.nextIdle
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ~~~~~~~~
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ├─ android.app.ActivityThread$ActivityClientRecord instance
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Leaking: UNKNOWN
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Retaining 216.8 kB in 2420 objects
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ activity instance of com.hjq.demo.ui.activity.DialogActivity with mDestroyed = true
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ↓ ActivityThread$ActivityClientRecord.window
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ~~~~~~
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: ├─ com.android.internal.policy.PhoneWindow instance
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Leaking: YES (Window#mDestroyed is true)
2021-12-31 11:19:24.728 26711-27091/com.hjq.demo.debug D/LeakCanary: │ Retaining 13.8 kB in 280 objects
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: │ mContext instance of com.hjq.demo.ui.activity.DialogActivity with mDestroyed = true
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: │ mOnWindowDismissedCallback instance of com.hjq.demo.ui.activity.DialogActivity with mDestroyed = true
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: │ mWindowControllerCallback instance of com.hjq.demo.ui.activity.DialogActivity with mDestroyed = true
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: │ ↓ PhoneWindow.mDecor
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ╰→ com.android.internal.policy.DecorView instance
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ Leaking: YES (ObjectWatcher was watching this because com.android.internal.policy.DecorView received
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ View#onDetachedFromWindow() callback and View.mContext references a destroyed activity)
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ Retaining 5.1 kB in 59 objects
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ key = bc38649f-787b-4cf7-a59e-a1f8f48a85f7
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ watchDurationMillis = 5248
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ retainedDurationMillis = 231
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ View not part of a window view hierarchy
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ View.mAttachInfo is null (view detached)
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ View.mWindowAttachCount = 1
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ mContext instance of com.android.internal.policy.DecorContext, wrapping activity com.hjq.demo.ui.activity.
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ​ DialogActivity with mDestroyed = true
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ====================================
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: 0 LIBRARY LEAKS
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: A Library Leak is a leak caused by a known bug in 3rd party code that you do not have control over.
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: See https://square.github.io/leakcanary/fundamentals-how-leakcanary-works/#4-categorizing-leaks
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ====================================
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: 0 UNREACHABLE OBJECTS
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: An unreachable object is still in memory but LeakCanary could not find a strong reference path
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: from GC roots.
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ====================================
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: METADATA
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: Please include this in bug reports and Stack Overflow questions.
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: Build.VERSION.SDK_INT: 28
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: Build.MANUFACTURER: Xiaomi
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: LeakCanary version: 2.7
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: App process name: com.hjq.demo.debug
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: Count of retained yet cleared: 3 KeyedWeakReference instances
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: Stats: LruCache[maxSize=3000,hits=5704,misses=66084,hitRate=7%]
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: RandomAccess[bytes=4110624,reads=66084,travel=32053565719,range=20375371,size=25249073]
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: Heap dump reason: 5 retained objects, app is visible
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: Analysis duration: 5889 ms
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: Heap dump file path: /storage/emulated/0/Download/leakcanary-com.hjq.demo.debug/2021-12-31_11-19-16_274.hprof
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: Heap dump timestamp: 1640920764707
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: Heap dump duration: 2130 ms
2021-12-31 11:19:24.729 26711-27091/com.hjq.demo.debug D/LeakCanary: ====================================
2021-12-31 11:19:24.763 26711-26711/com.hjq.demo.debug D/LeakCanary: Watching instance of leakcanary.internal.HeapAnalyzerService (leakcanary.internal.HeapAnalyzerService received Service#onDestroy() callback) with key 892cd880-6a5a-4c94-9847-cf59a55d0c97

Demo内存泄漏

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:demo

  • 问题描述【必填】:webview?

  • 复现步骤【必填】:

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:TPS980P

  • 出现问题的安卓版本【必填】:7

请回答

  • 是部分机型还是所有机型都会出现【必答】:部分

  • AndroidProject 最新的版本是否存在这个问题【必答】:是

  • 是否已经查阅框架文档还未能解决的【必答】:否

  • issue 是否有人曾提过类似的问题【必答】:否

  • 是否可以通过 AndroidProject 工程来复现该问题【必答】:是

  • 使用原生的权限 API 是否会出现该问题【必答】:是

其他

  • 提供报错堆栈

┬───
│ GC Root: System class

├─ android.app.ActivityThread class
│ Leaking: NO (a class is never leaking)
│ ↓ static ActivityThread.sCurrentActivityThread
│ ~~~~~~~~~~~~~~~~~~~~~~
├─ android.app.ActivityThread instance
│ Leaking: UNKNOWN
│ Retaining 143.5 kB in 2731 objects
│ mInitialApplication instance of com.hjq.demo.app.AppApplication
│ mSystemContext instance of android.app.ContextImpl
│ ↓ ActivityThread.mActivities
│ ~~~~~~~~~~~
├─ android.util.ArrayMap instance
│ Leaking: UNKNOWN
│ Retaining 132.1 kB in 2541 objects
│ ↓ ArrayMap.mArray
│ ~~~~~~
├─ java.lang.Object[] array
│ Leaking: UNKNOWN
│ Retaining 132.1 kB in 2539 objects
│ ↓ Object[].[3]
│ ~~~
├─ android.app.ActivityThread$ActivityClientRecord instance
│ Leaking: UNKNOWN
│ Retaining 132.1 kB in 2538 objects
│ Library leak match: instance field android.app.ActivityThread$ActivityClientRecord#nextIdle
│ activity instance of com.hjq.demo.ui.activity.HomeActivity with mDestroyed = false
│ ↓ ActivityThread$ActivityClientRecord.nextIdle
│ ~~~~~~~~
├─ android.app.ActivityThread$ActivityClientRecord instance
│ Leaking: UNKNOWN
│ Retaining 125.4 kB in 2325 objects
│ activity instance of com.hjq.demo.ui.activity.PersonalDataActivity with mDestroyed = true
│ ↓ ActivityThread$ActivityClientRecord.activity
│ ~~~~~~~~
╰→ com.hjq.demo.ui.activity.PersonalDataActivity instance
​ Leaking: YES (ObjectWatcher was watching this because com.hjq.demo.ui.activity.PersonalDataActivity received
​ Activity#onDestroy() callback and Activity#mDestroyed is true)
​ Retaining 52.7 kB in 924 objects
​ key = cc01d22d-0ed5-4502-bc91-db7666a09f3e
​ watchDurationMillis = 5307
​ retainedDurationMillis = 304
​ mApplication instance of com.hjq.demo.app.AppApplication
​ mBase instance of androidx.appcompat.view.ContextThemeWrapper

                                                                                                METADATA
                                                                                                
                                                                                                Build.VERSION.SDK_INT: 25
                                                                                                Build.MANUFACTURER: rockchip
                                                                                                LeakCanary version: 2.7
                                                                                                App process name: com.hjq.demo.debug
                                                                                                Stats: LruCache[maxSize=3000,hits=2538,misses=46890,hitRate=5%]
                                                                                                RandomAccess[bytes=10815310,reads=46890,travel=29482433498,range=20901836,size=33254247]
                                                                                                Heap dump reason: 7 retained objects, app is visible
                                                                                                Analysis duration: 6588 ms

当我新建一个空activity的时候会自动在app.gradle里添加依赖,并且运行失败

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

问题描述

  • 框架版本【必填】:13.2

  • 问题描述【必填】:右键选择new-activity-empty views activity新建了一个activity过后

  • 1.会在app.gradle中新添加依赖
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.8.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'

2.并且会在app.gradle文件顶部导入插件apply plugin: 'org.jetbrains.kotlin.android'
3.清单文件也被篡改与string文件也被篡改。
4.再打包运行的时候就会报错:Can't determine type for tag '?attr/shapeAppearanceCornerSmall'

  • 复现步骤【必填】:同问题描述

  • 是否必现【必填】:是

  • 出现问题的手机信息【必填】:小米10

  • 出现问题的安卓版本【必填】:13

请回答

  • 是部分机型还是所有机型都会出现【必答】:全部

  • AndroidProject 最新的版本是否存在这个问题【必答】:是

  • 是否已经查阅框架文档还未能解决的【必答】:是

  • issue 是否有人曾提过类似的问题【必答】:否

  • 是否可以通过 AndroidProject 工程来复现该问题【必答】:是

  • 使用原生的权限 API 是否会出现该问题【必答】:否

其他

  • 提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)

  • 提供截图或视频(根据需要提供,此项不强制)
    1701325723735
    1701325772468
    1701325811154
    1701325867484
    1701325932096

  • 提供解决方案(如果已经解决了的话,此项不强制)

更新计划,我记得之前看过,现在找不到了

【警告:请务必按照 issue 模板填写,不要抱有侥幸心理,一旦发现 issue 没有按照模板认真填写,一律直接关闭】

建议收集

  • issue 是否有人曾提过类似的问题?【必答】有过类似问题,但是貌似未按照issue模板填写被关闭了。

  • 你觉得框架有什么不足之处?【必答】没有。目前只有Bug、建议可选,选建议感觉靠谱点,毕竟只是想问问版本更新的计划?

  • 你觉得该怎么去完善会比较好?【非必答】看了关于为什么不适用ViewBinding的说明,但是感觉还是使用ViewBinding更方便一些。当然,这只是自己的感受。有没有考虑使用Jetpack Compose的打算? 打扰了,谢谢。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.