2011-08-01 92 views
25

顯然Spongy Castle是使用完整版Bouncy Castle的Android替代品。如何在Android中包含Spongy Castle JAR?

但是,在導入jar時,我得到各種「無法解決」的錯誤,因爲它依賴於未包含在Android中的包,主要是javax.mail,javax.activation和javax.awt.datatransfer。

那麼最好的解決辦法是什麼?對this questionthis的迴應表明,根本不應該使用這些軟件包,並且this popular question甚至沒有考慮找到回AWT的方法。那麼Spongy Castle如何依靠它們呢? People are using Spongy Castle,對吧?

回答

31

這是兩個非常簡單的如何將海綿島城某工程實例:

由於v1.47,海綿城堡一直拆分成單獨的子瓶子,其精確地反映了匹配的Bouncy Castle工件(例如sc-light-jdk15on.jar,scpg-jdk15on.jar等),並且重要的是確保您包括全部 Spongy城堡罐子需要你在做什麼。

依存關係的全部信息,可以發現在:

http://rtyley.github.com/spongycastle/#downloads

您至少將需要sc-light-jdk15on.jar(基地輕質-API實現),並可能scprov-jdk15on.jar(在JCE周圍的輕量級的API包裝)。如果你使用Maven,那麼所有這些依賴管理的東西都會爲你照顧。

javax.mailjavax.activation等描述該問題的相關性,表明你可能選擇了不正確的罐子(如每單庫組件之一,而不是「核心供應商」之一) - 爲scprov-jdk15on罐肯定有任何這些怪異的依賴,並在Android上愉快地運行。

(聲明,我是海綿城堡的維護者,但我已經有足夠的其他用戶成功應用的報告呢!)

+0

事情是,我相信這是我正在使用的確切JAR文件。我去了https://github.com/rtyley/spongycastle並點擊下載子標題下的「你可以直接在這裏下載最新的jar」鏈接。不幸的是,我不再在這個項目上工作了,所以我很可能不會再有機會再次嘗試 - 但爲了其他人的利益,將您的JAR文件包含在Android項目中的建議步驟是什麼? –

+0

我添加了你的lib,但是它仍然拋出bouncycastle.ans1類沒有找到的異常類加載。如何使它在海綿城堡中搜索? –

+0

如何從此鏈接添加lib https://github.com/rtyley/spongycastle ..沒有jar文件... –

32

如果使用gradle這個,那麼你可以在build.gradle指定的依賴這樣的文件:

dependencies { 
    .... 
    compile 'com.madgag.spongycastle:core:1.54.0.0' 
    compile 'com.madgag.spongycastle:prov:1.54.0.0' 
    compile 'com.madgag.spongycastle:pkix:1.54.0.0' 
    compile 'com.madgag.spongycastle:pg:1.54.0.0' 

    } 

你可以找到最新版本的圖書館here

不要忘記將它作爲安全提供程序插入到您的應用程序中。

static { 
    Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1); 
} 
+6

哪裏可以添加安全提供程序行?在自定義應用程序類中? – AndyRoid

+0

是的,我們已經在我們的自定義類中添加了這個。無論何時該類實例被引用,提供者get都被插入。 確保您要插入的類是您的加密操作的入口點。 – ua741

+1

就我而言,我已將靜態塊放入我的自定義應用程序類中,發生了噩夢。該應用始終抱怨無效的SSL證書並彈出不可信的連接對話框。我將靜態塊移至Crypto utils類,問題得到解決。 –

相關問題