gpt4 book ai didi

android.view.InflateException(错误充气类)仅在生产

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:38 24 4
gpt4 key购买 nike

我的应用程序使用了某个第 3 方 CustomView,我没有将其正确添加到项目中。我所做的是,我将项目文件下载为 *.java 并手动将它们添加到 com.blabla.utils.CustomView 包下的项目中(这就是我在使用此类的 *.xml 文件中定义它的方式)。当我在多个设备上调试/测试应用程序时(使用 USB 电缆,并将签名的 apk 发送给测试仪),一切似乎都很好。但是当我将应用程序上传到生产环境时,突然出现异常

java.lang.RuntimeException:无法启动 Activity ComponentInfo{com.*.*}:
android.view.InflateException:二进制 XML 文件第 55 行:膨胀类时出错
com.*.*.CustomView

现在,我意识到我的问题是什么,我没有正确添加项目,我需要将库作为现有项目添加到我的工作区中,并将该项目链接到我的主项目。我将 *.xml 文件中的 com.blabla.utils.CustomView 更改为 com.theoriginaldeveloper.package。它确实解决了上传新 APK 的问题。

但我的问题是,为什么我在调试应用程序时没有收到此消息?我怎么能确定避免这种生产异常?我在这里缺少什么?

(注意:我确实使用我在测试和使用 Eclipse 时使用的相同 keystore 对 APK 进行了签名)。

谢谢。

最佳答案

很可能,您的发布版本已经运行并且混淆器破坏了类名,而调试版本没有被混淆。

Android 应用通常使用 ProGuard 作为混淆器/优化器。

为什么它使用原始类名是因为库项目有一个混合配置文件,其中包含不混淆特定类的规则,因为它们需要从 XML 布局中动态引用。当您更改包名称时,混淆器规则与新包名称不匹配。

具体来说,在项目目录中查找 proguard-project.txt,其中的规则如下

-keep public class foo.somepackage.SomeClassName

并确保在更改包或类名称时更新规则。

关于android.view.InflateException(错误充气类)仅在生产,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20705391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com