在Android Studio中将targetSDK更改为29后关闭应用程序

时间:2020-08-06 08:55:25

标签: java android sdk android-source google-play-console

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:关闭VM

E / Android运行时:致命异常:主要 进程:net.abc.def,PID:28318 java.lang.RuntimeException:无法启动活动ComponentInfo {net.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接口。因为Google解释如下

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

#没有其他选择。开发人员切勿直接访问此字段。

是否由于非SDK接口导致异常终止?那么您如何解决呢?我的代码中使用了许多LayoutInflaters。

1 个答案:

答案 0 :(得分:0)

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

在我的情况下,罪魁祸首是书法库的旧版本。 enter image description here

Crash on calligraphy library by chris Jenx for Android Q