在android studio中将targetSDK更改为29后关闭应用程序

Posted

技术标签:

【中文标题】在android studio中将targetSDK更改为29后关闭应用程序【英文标题】:shut down app after changing targetSDK to 29 in android studio 【发布时间】:2020-11-26 12:16:14 【问题描述】:
compileSdkVersion 29
defaultConfig 
    ...
    targetSdkVersion 29
    ...

根据 Play 管理中心的说法,新应用将从 8 月开始更改为 SDK 29,除非从 11 月开始更新,否则无法上传。将目标SDK更改为29后,应用异常结束。日志为:

W/abc.def:访问隐藏字段 Landroid/view/LayoutInflater;->mConstructorArgs: [Ljava/lang/Object; (greylist-max-p, 反射, 拒绝)

D/AndroidRuntime:关闭虚拟机

E/AndroidRuntime: 致命异常: main 进程:net.abc.def,PID:28318 java.lang.RuntimeException:无法启动活动 ComponentInfonet.abc.def/net.abc.def.ui.SplashActivity: android.view.InflateException:二进制 XML 文件第 17 行 net.abc.def:layout/abc_screen_simple:二进制 XML 文件第 17 行 net.abc.def:layout/abc_screen_simple:膨胀类错误 android.support.v7.widget.FitWindowsLinearLayout

我猜这是因为我使用的是非 SDK 接口。因为谷歌解释如下

Landroid/view/LayoutInflater;->mConstructorArgs:[Ljava/lang/Object;   

#没有公共替代方案。开发人员不应直接访问此字段。

非sdk接口导致异常终止?那你怎么解决呢?我的代码中使用了很多 LayoutInflater。

【问题讨论】:

即使我也面临同样的问题..您找到解决方案了吗? 【参考方案1】:

如果您没有在源代码中使用 mConstructorArgs,请尝试搜索您的任何库是否正在访问该字段。

就我而言,罪魁祸首是旧版本的书法库。

Crash on calligraphy library by chris Jenx for Android Q

【讨论】:

以上是关于在android studio中将targetSDK更改为29后关闭应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android Studio 中将 ListView 更改为 RecyclerView?

如何在 Android Studio Java 中将数组上传到 Firestore 数据

如何在Android Studio中将Pdf文件转换为文本

在 Android Studio 中将 MySQL 中的数据显示到 TextView 中

如何在 Android Studio 中将 CSV 文件解析为数组

如何在我的Android Studio中将本地管理面板与我的Android应用程序连接?