MultiDexApplication не распознан
попытка использовать MultiDexApplication в моем приложении, но класс не распознается, когда я пытаюсь расширить свою активность приложения с ним.
вот моя сборка.файл gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion '21.0.1'
defaultConfig {
applicationId 'com.myapp'
minSdkVersion 10
targetSdkVersion 21
versionCode 115
versionName '4.8'
}
buildTypes {
debug {
debuggable true
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
debuggable false
runProguard true
zipAlign true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
lintOptions {
checkReleaseBuilds false
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.gms:play-services:6.1.11'
compile 'com.android.support:appcompat-v7:21.0.0'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.viewpagerindicator:library:2.4.1@aar'
compile project(':facebook')
}
вы можете видеть, что я компилирую на 21, используя последние инструменты сборки и последнюю библиотеку служб и поддержки google play.
кто-нибудь получил эту работу?
4 ответов
класс MultiDexApplication не является частью библиотеки appcompat-v7. Он поставляется в отдельной банке (называется android-support-multidex).
найти android-поддержка-multidex.Джар под /sdk / extras/android/поддержка/multidex/библиотека / libs (доступно из версии 21 библиотеки поддержки) и скопируйте его вlibs папка.
обновление (11/5/2014):
Банку теперь доступен в центре репозиторий:
dependencies {
...
compile 'com.android.support:multidex:1.0.0'
}
подробнее:здесь.
хотя этот вопрос довольно старый, я получил эту ошибку в многомодульной настройке при попытке построить различные модули вместе как один APK для API
Если вы используете AndroidX, обязательно замените старую многодексную зависимость
compile 'com.android.support:multidex:1.0.3'
на новый
implementation 'androidx.multidex:multidex:2.0.0'
я следовал этой сообщение в блоге, в соответствии с которым MultiDexApplication должен быть включен в R21 библиотеки поддержки.
мой IDE было неприятностей это.
Я заставил его работать сейчас с помощью MULTIDEX проект github, добавив (Вы можете увидеть более подробную информацию на странице проекта):
android {
dexOptions {
preDexLibraries = false
}
}
repositories {
jcenter()
}
dependencies {
compile 'com.google.android:multidex:0.1'
}
afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = []
}
dx.additionalParameters += '--multi-dex' // enable multidex
dx.additionalParameters += "--main-dex-list=$projectDir/multidex.keep".toString()
}
}
и добавление $project_dir / multidex.храните файл со следующим содержимым:
android/support/multidex/BuildConfig.class
android/support/multidex/MultiDex$V14.class
android/support/multidex/MultiDex$V19.class
android/support/multidex/MultiDex$V4.class
android/support/multidex/MultiDex.class
android/support/multidex/MultiDexApplication.class
android/support/multidex/MultiDexExtractor.class
android/support/multidex/MultiDexExtractor.class
android/support/multidex/ZipUtil$CentralDirectory.class
android/support/multidex/ZipUtil.class
проект github страница упоминает также некоторое рассмотрение содержания вашей реализации класса MultiDexApplication:
- статические поля в вашем классе приложений будут загружены до MultiDex#установить называется! Поэтому рекомендуется избегать статических полей с типами, которые могут быть размещены вне основных классов.файл Декса.
- методы вашего класса приложения могут не иметь доступа к другим классам которые загружаются после класса приложения. Как workarround для этого, вы можете создать другой класс (любой класс, В приведенном выше примере, я использую Runnable) и выполнить содержимое метода внутри него.
Я получил решение:)
обновление до jdk 8 и изменение местоположения JDK в Android Studio в
файл > структура проекта > расположение SDK
найдите и измените местоположение JDK и нажмите OK