2016-08-08 14 views
0

私はAndroidライブラリを開発中です。 My Client(アプリケーション開発者)がJarファイルを適用すると、エラーメッセージが表示されます。 ビルドは正常ですが、Androidスタジオで(playButton)Appを実行すると発生します。
以下のようなエラーメッセージが表示されます。
':app:transformClassesWithMultidexlistForDebug'タスクの実行に失敗しました。Multidex transformClassesWithMultidexlistForDebug失敗

にjava.io.IOException:読み取ることができません[/ユーザ/ VSSCP_KYOSEON /ドキュメント/仕事/アンドロイド/ A/B /アプリ/ビルド/中間体/変換/ jarMerging /デバッグ/瓶/ 1/1F/combined.jar](スタックマップフレームにおけるプロセスクラス[COM/A/B/VSFunctionActivity.class](不明な検証タイプ[88])することはできません)

これは私のアプリケーションのGradleコード:

apply plugin: 'com.android.application' 

android { 
compileSdkVersion 23 
buildToolsVersion '24.0.1' 

defaultConfig { 
    applicationId "com.a.b" 
    minSdkVersion 18 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 
    multiDexEnabled true 
} 

compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_6 
    targetCompatibility JavaVersion.VERSION_1_6 
} 

dexOptions { 
    javaMaxHeapSize "4g" //specify the heap size for the dex process 
} 
} 

dependencies { 
compile fileTree(include: ['*.jar'], dir: 'libs') 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.0.1' 
compile project(':ChartLib') 
compile 'com.google.android.gms:play-services-fitness:8.4.0' 
compile 'com.android.support:multidex:1.0.1' 
compile files('libs/vs_sat_sdk.jar') 

}

My JARファイルはvs_sat_sdk.jarです。それはプロガードに適用されます。
Android Multidexガイドを既に適用しました。 https://developer.android.com/tools/building/multidex.htmlしかし、私は実行に失敗しました。

通常の操作状況です。
1. My jarファイルにproguardを適用します。 minSdkVersionが21を超えると、通常動作になります。しかし、minSdkVersionが21未満の場合、失敗したと表示されます。
2.マイ・ジャー・ファイルがproguardに適用されない場合、minSdkVersionに関係なく、通常の操作です。

あなたの解決策について教えてください。

よろしくお願いいたします。

答えて

0

おそらくjarファイルが、StackMapFrame属性を正しく更新しないツールによって処理されている可能性があります。

実際には、StackMapFrame属性はAndroid開発には必要ないため、ProGuardに作成しないように指示すると問題が解決する可能性があります。ライブラリにProGuardを適用する際に、以下の設定をあなたの設定に追加してください:

-dontpreverify 
+0

ありがとうございます。私はすでに-dontpreverifyを設定しました。しかし、同じ問題が発生します。私はこの問題を解決しました。 -dontptimizeを設定した後、作業は正常です。 –