Подтвердить что ты не робот

Библиотека NoClassDefFoundError для каллиграфии

После добавления compile 'com.android.support:support-v13:21.0.+' в build.gradle у меня возникли конфликты при создании моего приложения, поэтому мне пришлось добавить multiDexEnabled = true в defaultConfig внутри build.gradle. Эти конфликты исчезли, но у меня появилось другое исключение (при открытии приложения) для недостающей библиотеки каллиграфии:

java.lang.NoClassDefFoundError: uk.co.chrisjenx.calligraphy.R$attr
        at uk.co.chrisjenx.calligraphy.CalligraphyConfig$Builder.<init>(CalligraphyConfig.java:150)
        at com.taxiyaab.android.util.ApplicationClass.onCreate(ApplicationClass.java:120)
        at newapp.com.taxiyaab.taxiyaab.PassengerApplication.onCreate(PassengerApplication.java:68)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4462)
        at android.app.ActivityThread.access$1500(ActivityThread.java:144)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1306)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:212)
        at android.app.ActivityThread.main(ActivityThread.java:5135)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
        at dalvik.system.NativeStart.main(Native Method)

Моя последняя версия sdk build tools 22.0.1. Кто-нибудь сталкивался с этим вопросом раньше?

4b9b3361

Ответ 1

Если вы поддерживаете уровни API ниже 21, ваш класс Application должен расширять MultiDexApplication из библиотеки поддержки.

class MyApplication extends MultiDexApplication

Если у вас нет настраиваемого класса Application, вы должны добавить класс MultiDexApplication непосредственно в манифест

<application
    android:name="android.support.multidex.MultiDexApplication">
</application>

См. https://developer.android.com/tools/building/multidex.html

Ответ 2

Если ваше приложение выходит из приложения, то переопределите attachBaseContext внутри приложения i.e

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

Также необходимо добавить зависимость

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

Ответ 3

Goodlife здесь снова на помощь. Добавьте эту строку в ur Java файл, который расширяет приложение.

 public void onCreate() {
    super.onCreate();

    mInstance = this;

    //ADD MULTIDEX.INSTALL(THIS) SOLVED MY SIMILAR PROBLEM
    MultiDex.install(this);
    CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
                    .setDefaultFontPath("fonts/Roboto-Regular.ttf")
                    .setFontAttrId(R.attr.fontPath)
                    .build()
    );
}

Ответ 4

Да, обновление до multidex 1.0.2 и добавьте Mulitidex.install(this) в расширяющее класс приложение

Ответ 5

MultiDex.install(this);

Это может устранить проблему.

Ответ 6

То, что я сделал, слишком обновляло библиотеку компиляции в файле уровня приложения gradle.

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

Я тоже обновил его

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

и это сработало для меня. Возможно, это помогает кому-то.