ClassNotFoundException android 仅在签名的 apk 上

Posted

技术标签:

【中文标题】ClassNotFoundException android 仅在签名的 apk 上【英文标题】:ClassNotFoundException android only on signed apk 【发布时间】:2015-06-09 05:46:58 【问题描述】:

我的 android 项目出现了一个奇怪的错误。 我已经在设备上测试了我的代码,一切正常,所以我签署了我的 apk,并将其加载到 play store。现在,当我从 Play 商店安装我的应用程序时,我的应用程序崩溃了

Failing to launch activity due to ClassNotFoundException

当应用尝试启动主要活动时。 所以我在我的设备上手动安装了 apk(签名和未签名),我注意到,未签名的 apk 效果很好,但签名的 apk 给了我同样的错误。 这怎么可能,我该如何解决这个错误?

【问题讨论】:

你是否启用了proguard,它可能会导致问题 不,我没有启用 proguard 【参考方案1】:

可能是您应用了 proguard 设置,删除了运行您的应用程序所需的文件,并在您签署的发行版 apk 中在运行时显示问题,如果是这样,请检查您的 proguard 设置 或者检查您的数据库代码,如果您更改了 dB 而没有更改您的 dB 版本?

【讨论】:

Proguard 没有启用,也是因为直到今天我才知道什么是骄傲! 请发布类未找到异常的完整 logcat 信息 如果您第一次听说 proguard,那么您可能不知道,但 proguard 正在工作。要检查它,如果你使用 eclipse 检查你的项目属性文件和 proguard 行应该通过在它之前添加一个 # 来注释,如果你使用 android studio 然后转到应用程序模块设置并在 release flavor 中设置最小化标志 false。 android项目有一个默认的proguard文件,如果启用此设置,将应用该文件,因此请检查一次

以上是关于ClassNotFoundException android 仅在签名的 apk 上的主要内容,如果未能解决你的问题,请参考以下文章

ClassNotFoundException-.BaseDexClassLoader.findClass

java.lang.ClassNotFoundException 运行 jar 文件时 Spring Boot 中的 java.lang.ClassNotFoundException - 添加库

ClassNotFoundException:org.sqlite.JDBC

ClassNotFoundException和NoClassDefFoundError

ClassNotFoundException和NoClassDefFoundError

ClassNotFoundException:oracle.jdbc.driver.OracleDriver