2012-08-09 29 views
1

我试图利用spongycastle的供应商和遵循所有help我能得到包括,但在应用程序执行它崩溃的,我将它添加为供应商代码:失败Spongycastle添加为Android的

static { 
    Security.addProvider(new org.spongycastle.jce.provider.BouncyCastleProvider()); 
} 

我将scprov-jdk15-1.46.99.3-UNOFFICIAL-ROBERTO-RELEASE.jar作为外部JAR添加到我的项目中,并且eclipse不报告任何错误。

任何想法?

堆栈跟踪:

08-11 12:41:56.653: W/ActivityThread(683): Application com.ljbrits.test4 is waiting for the debugger on port 8100... 
08-11 12:41:56.723: I/System.out(683): Sending WAIT chunk 
08-11 12:41:56.723: I/dalvikvm(683): Debugger is active 
08-11 12:41:56.914: I/System.out(683): Debugger has connected 
08-11 12:41:56.914: I/System.out(683): waiting for debugger to settle... 
08-11 12:41:57.113: I/System.out(683): waiting for debugger to settle... 
08-11 12:41:57.153: I/dalvikvm(683): threadid=3: reacting to signal 3 
08-11 12:41:57.203: I/dalvikvm(683): Wrote stack traces to '/data/anr/traces.txt' 
: 
08-11 12:41:59.344: I/System.out(683): waiting for debugger to settle... 
08-11 12:41:59.546: I/System.out(683): debugger has settled (1437) 
08-11 12:41:59.693: I/dalvikvm(683): threadid=3: reacting to signal 3 
08-11 12:41:59.824: I/dalvikvm(683): Wrote stack traces to '/data/anr/traces.txt' 
08-11 12:42:00.173: I/dalvikvm(683): threadid=3: reacting to signal 3 
08-11 12:42:00.183: I/dalvikvm(683): Wrote stack traces to '/data/anr/traces.txt' 
08-11 12:42:00.193: D/dalvikvm(683): threadid=1: still suspended after undo (sc=1 dc=1) 
08-11 12:42:00.283: E/dalvikvm(683): Could not find class 'org.spongycastle.jce.provider.BouncyCastleProvider', referenced from method com.ljbrits.test4.Test4Activity.<clinit> 
08-11 12:42:00.283: W/dalvikvm(683): VFY: unable to resolve new-instance 417 (Lorg/spongycastle/jce/provider/BouncyCastleProvider;) in Lcom/ljbrits/test4/Test4Activity; 
08-11 12:42:00.283: D/dalvikvm(683): VFY: replacing opcode 0x22 at 0x0000 
08-11 12:42:00.363: D/dalvikvm(683): DexOpt: unable to opt direct call 0x07d8 at 0x02 in Lcom/ljbrits/test4/Test4Activity;.<clinit> 
08-11 12:42:00.683: I/dalvikvm(683): threadid=3: reacting to signal 3 
08-11 12:42:00.714: D/dalvikvm(683): threadid=1: still suspended after undo (sc=1 dc=1) 
08-11 12:42:00.714: I/dalvikvm(683): Wrote stack traces to '/data/anr/traces.txt' 
: 
08-11 12:42:06.233: I/dalvikvm(683): Wrote stack traces to '/data/anr/traces.txt' 
08-11 12:42:08.719: W/dalvikvm(683): Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/ljbrits/test4/Test4Activity; 
08-11 12:42:08.719: W/dalvikvm(683): Class init failed in newInstance call (Lcom/ljbrits/test4/Test4Activity;) 
+0

我也试过这个与最新的Bouncycastle JAR失败相同的崩溃。 – LJB 2012-08-11 08:06:38

+0

我的目标是Android 4.0及以上 – LJB 2012-08-11 08:07:33

+0

你可以包含错误的堆栈跟踪吗?你应该能够使用'adb logcat'找到这个 – 2012-08-11 08:20:05

回答

0

这里引发的NoClassDefFoundError的建议没有被包含在已部署的APK文件的SpongyCastle类 - 尝试解压APK检查此)。这可能是由几件事引起的,确保你做一个干净的构建(你是用蚂蚁还是eclipse构建的?),如果问题依然存在,那很可能是一个proguard问题--ProGuard可能会剥离它认为未被使用的类 - 可以你发布你的proguard.cfg?

+0

我使用Eclipse,所以从项目菜单中我清理了项目并再次构建它。看看在我的项目目录的bin目录中创建的apk文件,我可以看到res,assets和META-INF目录以及resources.arsc,classes.dex和AndroidManifest.xml文件。 proguard的东西仍然在project.properties文件中被注释掉。这是验证它被禁用的正确位置吗? – LJB 2012-08-11 15:18:37

+1

现在看起来如此工作:我发现eclipse有一些帮助,其中指出必须标记导出的APK必须是APK的一部分的库(eclipse中属性对话框中的最后一个选项卡)。我这样做了,现在崩溃消失了。 感谢您的回复,让我的思维正确。 – LJB 2012-08-11 15:37:09

+0

我发现相同的东西。然而,在我的情况下,当jar文件与apk导出时,它会运行到GC开销限制失败...任何想法我可能做错了什么? – 2012-10-15 03:21:13

相关问题