java.lang.IllegalAccessError:在将AppCompat添加到稳定应用程序后,预验证类中的类ref解析为意外实现

时间:2014-10-23 18:14:06

标签: android android-5.0-lollipop android-appcompat

我有一个稳定的应用程序,现在已经工作了几个月,在添加appcompat_v7以支持Material主题后,一切都变成了废话。我刚刚将Activity更改为ActionBarActivity,主题更改为Theme.AppCompat

每次跑步一次

java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation

在随机库中或与视图无关的任意执行点内。它需要一个干净的构建和卸载才能让它再次运行。

java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
            at java.lang.reflect.Field.getAnnotation(Native Method)
            at java.lang.reflect.Field.getAnnotation(Field.java:212)
            at com.j256.ormlite.android.DatabaseTableConfigUtil.configFromField(DatabaseTableConfigUtil.java:243)
            at com.j256.ormlite.android.DatabaseTableConfigUtil.fromClass(DatabaseTableConfigUtil.java:50)
            at com.j256.ormlite.db.SqliteAndroidDatabaseType.extractDatabaseTableConfig(SqliteAndroidDatabaseType.java:76)
            at com.j256.ormlite.dao.DaoManager.createDao(DaoManager.java:67)
            at com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper.getDao(OrmLiteSqliteOpenHelper.java:279)

修改

行为充其量是不稳定的。它可能会也可能不会正确构建和运行。我最好的猜测是appcompat_v7不喜欢我们的multi-dex配置,或者让Gradle没有pre-dex库。

1 个答案:

答案 0 :(得分:2)

您应该在main dex中包含所有注释类。

症状不同,但解决方案与this question相同:
如何计算要放在main-dex-list文件中的类? 有script可以为您生成它。我写了一篇blogpost来说明如何使用它。

更新(2014年10月31日)
Gradle插件v0.14.0现在自动完成。请参阅我的回答here