书法库上的NoClassDefFoundError

时间:2015-05-28 10:03:43

标签: android noclassdeffounderror android-build

compile 'com.android.support:support-v13:21.0.+'添加到build.gradle后,我在构建应用时遇到了一些冲突,所以我必须在defaultConfig内{{strong> multiDexEnabled = true 1}}。这些冲突已经消失,但是我为缺少的书法图书馆提供了另一个例外(在打开应用程序时):

build.gradle

我最新的sdk构建工具版本是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) 。以前有人遇到过这个问题吗?

6 个答案:

答案 0 :(得分:32)

如果您支持21以下的API级别,那么您的Application类应该从支持库扩展MultiDexApplication

class MyApplication extends MultiDexApplication

如果您没有自定义Application类,则应将MultiDexApplication类直接添加到清单

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

请参阅https://developer.android.com/tools/building/multidex.html

答案 1 :(得分:6)

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()
    );
}

答案 2 :(得分:6)

如果您的应用程序从Application扩展,则覆盖Application中的attachBaseContext,即

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

还需要添加依赖

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

答案 3 :(得分:1)

是,更新到multidex 1.0.2 并将Mulitidex.install(this)添加到类扩展应用程序

答案 4 :(得分:0)

MultiDex.install(this);

这可以解决问题。

答案 5 :(得分:0)

我所做的还是更新app level gradle文件中的编译库。

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

我也更新了

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

它对我来说很好。 也许这有助于某人。