2016-06-29 10 views
1

私のアプリケーションはLollipopデバイスで正常に動作しています。しかし、LollipopよりAPIが低いデバイスを使用するとエラーが発生します。以下のロリポップデバイスのOkhttpネットワークライブラリの例外

私は、ネットワーク運用のためOkhttp使用していますとOkhttpは次のエラーを与えている:

Caused by: java.lang.NoClassDefFoundError: okhttp3.HttpUrl$Builder 
    at okhttp3.HttpUrl.parse(HttpUrl.java:642) 
    at okhttp3.Request$Builder.url(Request.java:140) 

ネットワーク操作は事前ロリポップデバイスで実行されているが、(またはそれ以上)ロリポップでは正常に動作していません。

私はこの理由は、ProGuardのはokhttpコードを難読化することを可能なWeb API

Request request = new Request.Builder().url(url).build(); 
OkHttpClient copy = client.newBuilder().readTimeout(20, TimeUnit.SECONDS).build(); 
Response response = copy.newCall(request).execute(); 
System.out.println("Response completed: " + response); 
return response.body().string(); 
+0

はあなたが有効になってmultidexingしているかは、拡張しますか? –

+0

yes multidexingが有効になっています –

+0

これの背景には何がありますか。私は多くを検索しましたが、いずれかの解決策を見つけることに失敗しました –

答えて

0

を呼び出すために、次のコードを使用しています。

あなたがproguardを使用している場合は、here述べたように、あなたのproguard-rules.proファイルにこれらのルールを追加したことを確認してください:

-keepattributes Signature 
-keepattributes Annotation 
-keep class okhttp3.** { ; } 
-keep interface okhttp3.* { ; } 
-dontwarn okhttp3.* 
+0

どこでこれらの変更を行いますか? –

+0

は、プロジェクトのルートディレクトリにある 'proguard-rules.pro'ファイルにあります。 –

+0

これでRとDをしました。これらの行の前にハッシュを置く必要がありますか? –

0

あなたがこの記事をチェックmultidexing有効にしている場合:
Square issues

希望します。

0

あなたがこの種のエラーがMultiDexApplicationでアプリケーションクラスを拡張していた場合、これはエラー.`

パブリッククラスグローバルに削除されますがMultiDexApplication { `

関連する問題