该应用程序超过了 65k 的引用限制。请启用 multidexing 您的应用程序或使用 ProGuard 减少方法并在亚马逊商店重新提交应用程序

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

我正在亚马逊应用商店上传我的 Fire TV 应用程序。我收到 multidex 库错误。

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

下面是我的应用gradle文件

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">

下面是应用class

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

我关于 multidex 启用的代码出了什么问题,亚马逊商店拒绝我的 apk 上传并出现 multidex 错误?请给我解决方案

在您的应用 build.gradle 文件中:

defaultConfig {

    multiDexEnabled true
}

dependencies {

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

}

您可能不需要启用 multidex。编译所有 play-services 是非常不明智的,因为这很可能首先导致您超出限制。 play-services 编译所有 play-services 库,而不是只选择你需要的

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

如果不查看项目的其余部分,很难说出 google 播放服务还需要哪些其他依赖项,但您绝对应该避免编译所有这些依赖项,因为这可能是您 99% 的原因re 运行 超过 64k。另一个问题是你有 play-services version = '+' 和 analytics version = 10.2.4 而最新的是 11.6.0 所以这些版本甚至不匹配。如果你有play-services:你不需要play-services-分析:因为我上面提到的。

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

在他们的网站上查看 sub-libraries 的列表,只使用您需要的 sub-libraries。

另外由于你的min sdk是21,你不需要编译multidex库,它已经包含了,"if your minSdkVersion is 21 or higher, you do not need the multidex support library."

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

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

所以您已经在默认配置中将 multiDexEnabled 设置为 true

在文档的标题 "Configure your app for multidex" 下,您可以为您的项目设置 multidex。尝试扩展 MultiDexApplication

    public class MyApplication extends MultiDexApplication { ... }