Приложение превысило 65 тыс. Эталонных лимитов. Пожалуйста, включите мультидексирование вашего приложения или используйте ProGuard, чтобы сократить количество методов и повторно отправить приложение в Amazon Sto re

Я загружаю свое приложение Fire TV в магазин приложений Amazon. Я получил ошибку мультидекс библиотеки.

The app exceeded 65k reference limit. Please enable multidexing your app or use ProGuard to reduce methods and resubmit the app.

Ниже файл моего приложения

apply plugin: 'com.android.application'
android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 26
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        disable 'MissingTranslation'
    }
    dexOptions {
        javaMaxHeapSize = "4g"
        preDexLibraries = false
    }
}


dependencies {
    // Glide image library
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.android.support:support-v4:26.0.0'
    compile 'com.android.support:appcompat-v7:26.0.0'
    compile 'com.google.android.gms:play-services:+'
    compile 'com.google.android.gms:play-services-analytics:10.2.4'
    compile 'com.android.support:multidex:1.0.2'
    compile 'com.android.volley:volley:1.0.0'
    compile project(path: ':library')
    compile project(path: ':ffmpeg')
    compile project(path: ':okhttp')
    compile project(path: ':opus')
    compile project(path: ':flac')
    compile project(path: ':playbacktests')
    compile project(path: ':testutils')
    compile project(path: ':vp9')
    compile files('libs/WebtrendsAndroidClientLib.jar')
}

Ниже файл AndroidManifest

<application
    android:name=".controller.app.MyApp"
    android:allowBackup="true"
    android:banner="@drawable/tv_launcher"
    android:hardwareAccelerated="false"
    android:icon="@drawable/app_logo"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Black.NoTitleBar">

Ниже класс приложения

public class MyApp extends Application {
    @Overrideprotected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }
}

Что не так с моим кодом, касающимся multidex, так что магазин Amazon отказывается от моего apk за загрузку с ошибкой multidex? Пожалуйста, дайте мне решение

2 ответа

Решение

Скорее всего, вам не нужно включать мультидекс. компилировать все игровые сервисы очень плохо, потому что именно это, скорее всего, побуждает вас превысить лимит в первую очередь. play-services компилирует ВСЕ библиотеки play-services, а не просто выбирает те, которые вам нужны

compile 'com.google.android.gms:play-services:+'

не глядя на остальную часть вашего проекта, трудно сказать, какие еще зависимости вам нужны от сервисов google play, но вам определенно следует избегать компиляции всех их, поскольку это, вероятно, 99% причин, по которым вы используете 64 КБ. Другая проблема в том, что у вас есть версия play-services = '+' и версия аналитики = 10.2.4, когда последняя версия - 11.6.0, поэтому эти версии даже не совпадают. если у вас есть play-services: вам не нужна аналитика play-services: из-за того, что я упомянул выше.

https://developers.google.com/android/guides/setup

проверьте список библиотек на их сайте и используйте только те библиотеки, которые вам нужны.

также, поскольку ваш min sdk равен 21, вам не нужно компилировать мультидексную библиотеку, он включен: "Если ваш minSdkVersion равен 21 или выше, вам не нужна библиотека поддержки мультидекса".

compile 'com.android.support:multidex:1.0.2'

https://developer.android.com/studio/build/multidex.html

так что вы уже установили значение multiDexEnabled в ваш defaultConfig

под заголовком "Настройка приложения для мультидекса" в документации вы можете настроить мультидекс для своего проекта. попробуйте расширить MultiDexApplication

    public class MyApplication extends MultiDexApplication { ... }

В вашем приложении build.gradle файл:

defaultConfig {

    multiDexEnabled true
}

dependencies {

    compile 'com.android.support:multidex:1.0.2'

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