Ich habe Multidex
Unterstützung in meinem Projekt und es funktionierte gut auf Android 5.0 und höher, aber wenn ich begann, meine App mit Android 4.3 und darunter zu testen, geben Sie mir NoClassDefFoundError
für TwitterConfig
.Twitter Fabric + MultiDex verursacht NoClassDefFoundError
Ich kann meine Multidex
Unterstützung nicht deaktivieren. Ich verstehe nicht, warum ich dieses Problem bekomme. Versucht, die Lösung im Netz zu finden, hat aber nicht geholfen.
Hier ist eine Ausnahme, die ich bekomme.
java.lang.NoClassDefFoundError: com.twitter.sdk.android.core.TwitterAuthConfig$1
at com.twitter.sdk.android.core.TwitterAuthConfig.<clinit>(TwitterAuthConfig.java:39)
at MyApplication.onCreate(MyApplication.java:46)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4702)
at android.app.ActivityThread.access$1400(ActivityThread.java:168)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1389)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5493)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)
at dalvik.system.NativeStart.main(Native Method)
Hier ist meine app.gradle
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
mavenCentral()
}
android {
packagingOptions {
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE.txt'
}
compileSdkVersion 22
buildToolsVersion "23.0.0 rc3"
defaultConfig {
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
javaMaxHeapSize "2g"
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:multidex:1.0.1'
compile 'com.android.support:design:22.2.1'
compile 'com.android.support:recyclerview-v7:22.2.1'
compile 'com.android.support:cardview-v7:22.2.1'
compile 'com.android.support:support-v4:22.2.1'
compile project(':MPChartLib')
compile 'com.facebook.android:facebook-android-sdk:4.6.0'
compile('com.crashlytics.sdk.android:crashlytics:[email protected]') {
transitive = true;
}
compile('com.twitter.sdk.android:twitter:[email protected]') {
transitive = true;
}
}
Hier mein Twitter-Code in MyApplication
Klasse.
@Override
public void onCreate() {
super.onCreate();
//Configure twitter using Twitter key and Secret Key
TwitterAuthConfig authConfig =
new TwitterAuthConfig(TWITTER_KEY,
TWITTER_SECRET);
// add functionalities which we are using with Fabric
Fabric.with(this, new Crashlytics(), new Twitter(authConfig));
FacebookSdk.sdkInitialize(getApplicationContext());
// Initialize the SDK before executing any other operations,
// especially, if you're using Facebook UI elements.
}
Auch ich versuchte this Lösung auch, aber nicht geholfen.
Jeder Hinweis oder Referenz geschätzt.
Dank @Bhavesh: Wird diese Lösung versuchen, aber ich habe nicht Sie Hinzufügen MultiDexApplication in Manifest verweisen. Kannst du es bitte etwas ausarbeiten? Danke noch einmal. –
Wenn Ihre Anwendung über eine Klasse verfügt, die die Anwendungsklasse erweitert, können Sie dies einfach ignorieren, indem Sie dies in der Datei menifest einstellen. Nun, wenn Sie keine Anwendung Klasse haben, dann können Sie ihre Unterstützung direkt von Menifest-Datei aktivieren So, seine Art von Zwei alternative Möglichkeiten können Sie die Unterstützung von MultiDex aktivieren –
Shouldnt die MultiDex.install (getTargetContext()); Sei nach dem super() Aufruf onCreate? – Jalpesh