Android:已签名的Apk文件不包含外部库并抛出“java.lang.ExceptionInInitializerError”

时间:2012-09-18 19:48:50

标签: android actionbarsherlock apk

我最近在Google Play上签了一个apk文件发布,当我在Google Play上下载该应用程序并安装它时,它会抛出java.lang.ExceptionInInitializerError。

我的同事和我怀疑图书馆没有被添加到我们签名的apk文件中。

我们将额外的库添加到我们的项目中,方法是将其添加到项目的构建路径中。

此外,我们尝试添加到项目中的库是ActionBarSherlock。

有没有理由我们的库没有包含在我们签名的apk文件中,因为我们注意到我们签名的apk的文件大小比我们的未签名版本小?

有人能指出我们正确的方向正确签署我们的apk文件,以便它包含我们添加到构建路径中的库吗?

3 个答案:

答案 0 :(得分:4)

我有完全相同的错误 android.support.v4 jar文件。 deeJ是正确的,如果你看ActionBarSherlock网站它告诉你在proguard文件中添加以下内容:

-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class com.actionbarsherlock.** { *; }
-keep interface com.actionbarsherlock.** { *; }

-keepattributes *Annotation*

答案 1 :(得分:2)

我发现问题是Proguard在ActionBarSherlock上打得不好。尝试使用此处提供的提示:

http://actionbarsherlock.com/faq.html

答案 2 :(得分:0)

不确定您的确切构建过程,我的建议是将Maven用于您的构建。可能是您的依赖性仅用于调试版本而不是发布版本。我建议的另一件事是,在将某些东西放到app商店之前,使用Android Debug Bridge(adb)在设备上手动安装它并检查这些错误。