【发布时间】: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:无法启动活动 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 接口。因为谷歌解释如下
Landroid/view/LayoutInflater;->mConstructorArgs:[Ljava/lang/Object;#没有公共替代方案。开发人员不应直接访问此字段。
非sdk接口导致异常终止?那你怎么解决呢?我的代码中使用了很多 LayoutInflater。
【问题讨论】:
-
即使我也面临同样的问题..您找到解决方案了吗?
标签: java android sdk android-source google-play-console