Компонент Shrink Debug Multi Dex; Не удается прочитать dir/allclasses.jar

Я разрабатываю приложение, которое позволяет Multidex, чтобы избежать ограничения в 65 КБ. Я хочу добавить внешнюю библиотеку в типе Jar (например, iPay Jar SDK). Я синхронизировал Gradle и добился успеха, но мне не удалось запустить проект.

Сообщение об ошибке показано ниже

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 {
            ...
        }
    }
}

До того, как я добавил этот тип внешней библиотеки (например, iPay Jar SDK), приложение успешно работало. Но проблема возникла после того, как я добавил iPay Jar SDK (вторая библиотека Jar).

Для получения дополнительной информации я уже следовал этому руководству на https://developer.android.com/tools/building/multidex.html Но это не помогло моему проекту.

Что вы предлагаете исправить эту ошибку?

2 ответа

Попробуй это:

public class MyApplication extends MultiDexApplication
{
    @Override
    protected void attachBaseContext(Context base)
    {
        super.attachBaseContext( base );
    }

    @Override
    public void onCreate()
    {
        MultiDex.install(getTargetContext());
        super.onCreate();
    }

}

Кажется, ваша библиотека не совместима с Multidex. Так что лучше обновите библиотеку до последней версии (если доступно обновление). Или используйте только необходимый API сервисов Google Play в своем приложении и избавьтесь от Multidex. замещать

  compile 'com.google.android.gms:play-services:8.1.0'  (the whole library)

это с чем-то, что вы используете в своем приложении, как это

 compile 'com.google.android.gms:play-services-ads:8.1.0'  (library only for ads)

и удали это compile 'com.android.support:multidex:1.0.1'

Вы можете найти все API сервисов Google Play здесь https://developers.google.com/android/guides/setup

Другие вопросы по тегам