我是一名热爱 Android 技术的程序员,平时爱造轮子,人送外号轮子哥 。
我的理想是让这个世界没有难开发的安卓项目,消灭一切难维护的代码。
Android 技术中台 Kotlin 版本,但愿人长久,搬砖不再有
License: Apache License 2.0
框架版本【必填】:直接下载的最新版本的
问题描述【必填】:直接引入base和weight库后dimen识别不了
复现步骤【必填】:新建项目直接引入base和weight库后dimen识别不了
是否必现【必填】:是
出现问题的手机信息【必填】:红米note9
出现问题的安卓版本【必填】:12
是部分机型还是所有机型都会出现【必答】:部分
AndroidProject 最新的版本是否存在这个问题【必答】:是
是否已经查阅框架文档还未能解决的【必答】:是
issue 是否有人曾提过类似的问题【必答】:否
是否可以通过 AndroidProject 工程来复现该问题【必答】:否(排查一下是不是自己的项目代码写得有问题导致的)
使用原生的权限 API 是否会出现该问题【必答】:否(排查一下是不是 AndroidProject 的代码存在问题导致的)
提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)
提供截图或视频(根据需要提供,此项不强制)
提供解决方案(如果已经解决了的话,此项不强制)
框架版本【必填】: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 是否会出现该问题【必答】:否
这个Demo好像没带 SQLiteHelper 吧
框架版本【必填】:13.2
问题描述【必填】:notifyItemRemoved导致的数组下标越界问题
复现步骤【必填】:调用 notifyItemRemoved 之后,如果你移除的刚好是倒数第二个数据,此时点击最后一条数据,会报索引越界
是否必现【必填】:是
出现问题的手机信息【必填】:跟手机无关
出现问题的安卓版本【必填】:跟安卓版本无关
是部分机型还是所有机型都会出现【必答】:全部(例如:某为,某 Android 版本会出现)
AndroidProject 最新的版本是否存在这个问题【必答】:是(如果用的是旧版本的话,建议升级看问题是否还存在)
是否已经查阅框架文档还未能解决的【必答】:否(文档会提供最常见的问题解答,可以看看是否有自己想要的)
issue 是否有人曾提过类似的问题【必答】:否(看看曾经有人提过类似的问题,先参考一下别人是怎么解决的)
是否可以通过 AndroidProject 工程来复现该问题【必答】:是(排查一下是不是自己的项目代码写得有问题导致的)
使用原生的权限 API 是否会出现该问题【必答】:是(排查一下是不是 AndroidProject 的代码存在问题导致的)
提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)
提供截图或视频(根据需要提供,此项不强制)
提供解决方案(如果已经解决了的话,此项不强制)
根据网上的文章,我在基类中做了部分调整,目前没有问题
框架版本【必填】: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 是否有人曾提过类似的问题?【必答】没有
你觉得框架有什么不足之处?【必答】缺少手机平板尺寸适配的动态修改
你觉得该怎么去完善会比较好?【非必答】
1,怎么修改demo中的基础尺寸设置
2,怎么适配折叠屏,折叠和展示,其尺寸比例差别较大,展开后屏幕尺寸接近1:1,如何进行动态修改;
轮子哥AndroidProject-Kotlin版本啥时候出来啊
框架版本【必填】:最新版
问题描述【必填】:activity中设置底部导航栏的颜色,底部导航栏的颜色没变!
复现步骤【必填】:activity中重写 override fun createStatusBarConfig(): ImmersionBar {
return super.createStatusBarConfig()
.navigationBarColor(R.color.black)
} 颜色并未改变
是否必现【必填】:是
出现问题的手机信息【必填】:小米10
出现问题的安卓版本【必填】:安卓13
是部分机型还是所有机型都会出现【必答】:部分(小米10)
AndroidProject 最新的版本是否存在这个问题【必答】:是
是否已经查阅框架文档还未能解决的【必答】:是
issue 是否有人曾提过类似的问题【必答】:否
是否可以通过 AndroidProject 工程来复现该问题【必答】:是
使用原生的权限 API 是否会出现该问题【必答】:否
提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)
提供截图或视频(根据需要提供,此项不强制)
提供解决方案(如果已经解决了的话,此项不强制)
框架版本【必填】:XXX
问题描述【必填】:请问如何进行手机平板尺寸适配的修改
复现步骤【必填】:XXX(注意:目前不受理没有复现步骤的 Bug 单)
是否必现【必填】:填是/否
出现问题的手机信息【必填】:请填写出现问题的品牌和机型
出现问题的安卓版本【必填】:请填写出现问题的 Android 版本
是部分机型还是所有机型都会出现【必答】:部分/全部(例如:某为,某 Android 版本会出现)
AndroidProject 最新的版本是否存在这个问题【必答】:是/否(如果用的是旧版本的话,建议升级看问题是否还存在)
是否已经查阅框架文档还未能解决的【必答】:是/否(文档会提供最常见的问题解答,可以看看是否有自己想要的)
issue 是否有人曾提过类似的问题【必答】:是/否(看看曾经有人提过类似的问题,先参考一下别人是怎么解决的)
是否可以通过 AndroidProject 工程来复现该问题【必答】:是/否(排查一下是不是自己的项目代码写得有问题导致的)
使用原生的权限 API 是否会出现该问题【必答】:是/否(排查一下是不是 AndroidProject 的代码存在问题导致的)
提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)
提供截图或视频(根据需要提供,此项不强制)
提供解决方案(如果已经解决了的话,此项不强制)
框架版本【必填】:V13.2
问题描述【必填】:小米手机mix4,系统android11,个人主页上传头像裁剪后上传文件失败,
复现步骤【必填】:点击上传头像,图片裁剪,上传失败,提示图片扩展名不被接受,debug发现header中的filename不是图片的filename,不带图片格式,所以服务器不接受。不清楚这个filename是怎么赋值的。issue上传了调试截图,大佬一看应该就明白
是否必现【必填】:是
出现问题的手机信息【必填】:小米手机mix4
出现问题的安卓版本【必填】:android11
是部分机型还是所有机型都会出现【必答】:部分,mix4 Android11系统会出现,mix2 android9系统不出现,推断和存储分区有关
AndroidProject 最新的版本是否存在这个问题【必答】:是
是否已经查阅框架文档还未能解决的【必答】:是
issue 是否有人曾提过类似的问题【必答】:否
是否可以通过 AndroidProject 工程来复现该问题【必答】:不确定,因为这个是向服务器上传才出现的问题,AndroidProject 不能的上传图片
使用原生的权限 API 是否会出现该问题【必答】:否(排查一下是不是 AndroidProject 的代码存在问题导致的)
提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)
提供截图或视频(根据需要提供,此项不强制)
issue 是否有人曾提过类似的问题?【必答】没有
你觉得框架有什么不足之处?【必答】目前还未支持viewBinding,控件还需要自己去findById很繁琐
你觉得该怎么去完善会比较好?【非必答】基类添加viewBinding的支持
最近发现有很多人给我提 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
框架版本【必填】:XXX
问题描述【必填】:XXX
复现步骤【必填】:XXX(注意:目前不受理没有复现步骤的 Bug 单)
是否必现【必填】:填是/否
出现问题的手机信息【必填】:请填写出现问题的品牌和机型
出现问题的安卓版本【必填】:请填写出现问题的 Android 版本
是部分机型还是所有机型都会出现【必答】:部分/全部(例如:某为,某 Android 版本会出现)
是
AndroidProject 最新的版本是否存在这个问题【必答】:是/否(如果用的是旧版本的话,建议升级看问题是否还存在)
是
是否已经查阅框架文档还未能解决的【必答】:是/否(文档会提供最常见的问题解答,可以看看是否有自己想要的)
是
issue 是否有人曾提过类似的问题【必答】:是/否(看看曾经有人提过类似的问题,先参考一下别人是怎么解决的)
否
是否可以通过 AndroidProject 工程来复现该问题【必答】:是/否(排查一下是不是自己的项目代码写得有问题导致的)
是
使用原生的权限 API 是否会出现该问题【必答】:是/否(排查一下是不是 AndroidProject 的代码存在问题导致的)
是
提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)
提供截图或视频(根据需要提供,此项不强制)
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 是否会出现该问题【必答】:否
提供报错堆栈(如果有报错的话必填,注意不要拿被混淆过的代码堆栈上来)
提供截图或视频(根据需要提供,此项不强制)
提供解决方案(如果已经解决了的话,此项不强制)
框架版本【必填】: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 是否会出现该问题【必答】:是
issue 是否有人曾提过类似的问题?【必答】否
你觉得框架有什么不足之处?【必答】比较疑惑 OnScrimsListener 监听的回调方法 onScrimsStateChange 中,控件参数明明传的是 this ,为什么是可空类型?
你觉得该怎么去完善会比较好?【非必答】当前对象应该是不为空的吧,为什么要设计为可空的参数呢?直接非空不可以吗?
轮子哥,感谢您的辛苦付出,请问能不能把你的dialog系列封装一下啊,特比喜欢你的东西
如题,什么时候能出第一版,期待
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 方法
希望快快更新最新版 等待
issue 是否有人曾提过类似的问题?【必答】没有
你觉得框架有什么不足之处?【必答】关于recyclerview可以增加多布局的封装
你觉得该怎么去完善会比较好?【非必答】(你可以提供一下自己的想法或者做法供作者参考)
框架版本【必填】: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 是否会出现该问题【必答】:是
issue 是否有人曾提过类似的问题?【必答】(一旦出现重复提问我将不会再次解答)
否
你觉得框架有什么不足之处?【必答】(你可以描述框架有什么令你不满意的地方)
建议升级gradle7,这版本对构建速度有优化
你觉得该怎么去完善会比较好?【非必答】(你可以提供一下自己的想法或者做法供作者参考)
升级下
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 的配置,在不影响正常功能的前提下,控制一下打出包的大小。
文档里图片都挂了
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
问题描述【必填】: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
想知道您会怎么对webview池化。包括对webview的白屏检测等等。
大佬,请问底部弹出的dialog,底部导航栏颜色怎么保持不变,现在底部弹出dialog,导航栏就会变成灰色,看起来很怪,请大佬指教,不胜感激
框架版本【必填】: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 是否会出现该问题【必答】:否
issue 是否有人曾提过类似的问题?【必答】有过类似问题,但是貌似未按照issue模板填写被关闭了。
你觉得框架有什么不足之处?【必答】没有。目前只有Bug、建议可选,选建议感觉靠谱点,毕竟只是想问问版本更新的计划?
你觉得该怎么去完善会比较好?【非必答】看了关于为什么不适用ViewBinding的说明,但是感觉还是使用ViewBinding更方便一些。当然,这只是自己的感受。有没有考虑使用Jetpack Compose的打算? 打扰了,谢谢。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.