私は65kの制限を避けるためにMultidexを有効にするアプリケーションを開発しています。 Jarタイプ(iPay Jar SDKなど)で外部ライブラリを追加したい私はGradleを同期して成功しましたが、プロジェクトを実行できませんでした。デバッグMulti Dexコンポーネントを縮小します。 Can not Read dir/allclasses.jar
私は外部のライブラリのこのタイプ(すなわちiPayジャーを追加する前に
Error:Execution failed for task ':app:shrinkDebugMultiDexComponents'.
java.io.IOException: Can't read [/[dir]/app/build/intermediates/multi-dex/debug/allclasses.jar] (Can't process class [com/ipay/IpayAcitivity.class] (Unknown verification type [14] in stack map frame))
の下のように表示されるエラーメッセージは、これは私のGradleコード
apply plugin: 'com.android.application'
apply plugin: 'android-apt'
def AAVersion = '3.2'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
}
}
repositories {
mavenCentral()
mavenLocal()
}
apt {
arguments {
androidManifestFile variant.outputs[0].processResources.manifestFile
resourcePackageName '[My Package]'
}
}
dependencies {
apt "org.androidannotations:androidannotations:$AAVersion"
compile "org.androidannotations:androidannotations-api:$AAVersion"
compile fileTree(dir: 'libs', include: ['*.jar'])
//Libs folder contains: org.apache.http.legacy.jar
//and ipay88_androidv7.jar
compile 'com.loopj.android:android-async-http:1.4.5'
compile 'com.github.rey5137:material:1.2.1'
compile 'com.jpardogo.materialtabstrip:library:1.0.9'
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:recyclerview-v7:23.0.1'
compile 'com.google.android.gms:play-services:8.1.0'
compile 'com.facebook.android:facebook-android-sdk:4.7.0'
compile 'com.android.support:multidex:1.0.1'
compile 'com.github.chrisbanes.actionbarpulltorefresh:library:+'
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
useLibrary 'org.apache.http.legacy'
defaultConfig {
applicationId "[My Application Id]"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java', 'build/source/apt/debug']
resources.srcDirs = ['src/main/res']
res.srcDirs = ['src/main/res']
assets.srcDirs = ['src/main/assets']
}
beta {
resources.srcDirs = ['app/src/beta/res']
res.srcDirs = ['app/src/beta/res']
}
}
signingConfigs {
release {
...
}
}
}
ですSDK)、アプリケーションが正常に実行されていました。しかし、私はiPay Jar SDK(2番目のJarライブラリ)を追加した後に問題が発生しました。
詳細については、私はすでにこのガイドに従っていましたhttps://developer.android.com/tools/building/multidex.html しかし、私のプロジェクトはうまくいきませんでした。
このエラーを修正するにはどうすればよいですか?
を再生見つけることができます
compile 'com.android.support:multidex:1.0.1'
これは明らかにあります削除iPay SDKの問題、特に 'com/ipay/IpayAcitivity.class'の問題です。 SDKは公開されていないため、実際には自分で確認することはできません。あなたはiPayのサポートに連絡しようとしましたか? –
@AlexLipov はい、私はIPayのサポートチームに連絡しています。しかし、彼らは答えを与えていない。他の新しいプロジェクト(サードパーティライブラリのないマルチプレックスなし)でSDKを実装しようとすると、プロジェクトはエラーなく実行できます。 – Izzuddiin
この例外はProguard(app:shrinkDebugMultiDexComponentsタスクは内部的にProguardを呼び出します。私の答え[ここ](http://stackoverflow.com/a/27207969/1233652)を参照してください)。したがって、2番目のプロジェクトで 'minifyEnabled'をtrueに設定すると、おそらく同じエラーが発生します。 –