2016-06-30 25 views
0

私はアンドロイドコードでspongycastleを使用しています。以下のコードでPemReaderの初期化時に失敗Android:org.spongycastle.util.io.pem.PemReaderを見つけられません

java.lang.NoClassDefFoundError: org.spongycastle.util.io.pem.PemReader 

その:

private PublicKey getPublicKey(AssetManager manager, String keyPath) { 
    PublicKey key = null; 
    try { 
     final KeyFactory keyFactory = KeyFactory.getInstance(TicketVerifier.ENCRYPTION_ALGORITHM); 
     InputStream stream = manager.open(keyPath); 
     final PemReader reader = new PemReader(new InputStreamReader(stream)); 
     final byte[] pubKey = reader.readPemObject().getContent(); 
     reader.close(); 
     final X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(pubKey); 
     key = keyFactory.generatePublic(publicKeySpec); 
    } catch (IOException e) { 
     Log.e(TAG, "error verifying ticket", e); 
    } catch (NoSuchAlgorithmException e) { 
     Log.e(TAG, "error verifying ticket", e); 
    } catch (InvalidKeySpecException e) { 
     Log.e(TAG, "error verifying ticket", e); 
    } 
    return key; 
} 

ビルドコードは、エラーを示す5アンドロイドで正常に動作し、アンドロイド6が、アンドロイド4にされます。グラデル

apply plugin: 'com.android.application' 

android { 
compileSdkVersion 23 
buildToolsVersion "23.0.2" 
useLibrary 'org.apache.http.legacy' 
defaultConfig { 
    applicationId "com.xx.xx.android" 
    minSdkVersion 17 
    targetSdkVersion 23 
    versionCode 22 
    versionName "5.0.0.22" 
    multiDexEnabled true 
} 

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
testCompile 'junit:junit:4.12' 
testCompile 'org.robolectric:robolectric:3.0' 
compile 'com.android.support:appcompat-v7:23.3.0' 
compile ('com.viewpagerindicator:library:2.4.1'){ 
    exclude group: 'com.android.support', module: 'support-v4' 
    exclude group: 'com.google.guava' 
} 
compile 'com.google.zxing:android-integration:2.2' 
compile 'com.google.zxing:core:2.3.0' 
compile ('com.google.android.gms:play-services:[email protected]'){ 
    exclude group: 'com.android.support', module: 'support-v4' 
    exclude group: 'com.google.guava' 
} 
compile 'com.google.guava:guava:17.0' 
compile 'org.altbeacon:android-beacon-library:2.1.3' 
compile 'com.fasterxml.jackson.core:jackson-core:2.2.3' 
compile 'com.fasterxml.jackson.core:jackson-annotations:2.2.3' 
compile 'com.fasterxml.jackson.core:jackson-databind:2.2.3' 
compile 'com.madgag:scprov-jdk15on:1.47.0.3' 
compile 'net.oauth.core:oauth:20100527' 
compile 'org.jsoup:jsoup:1.8.3' 
compile 'com.android.support:support-v4:23.3.0' 
} 

どのように対処方法を教えてもらえますか?

+0

コール 'コンパイル「com.madgag:scprov-jdk15on:この依存関係は、すでに私のGradleに追加され1.47.0.2' –

+0

@IntelliJAmiya。それでも同じエラーが表示されます。 – MHSN

答えて

0

スポンジキャスルはいくつかのパッケージに分割されています。 PemReaderは基本パッケージの一部ではありません。したがって、すべての依存関係を追加してください:

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' 

    } 

あなたのアプリにセキュリティプロバイダとして挿入するのを忘れないでください。

static { 
    Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1); 
} 
関連する問題