书法库上的 NoClassDefFoundError
NoClassDefFoundError on Calligraphy library
将 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.access00(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 构建工具版本是 22.0.1
。以前有人遇到过这个问题吗?
如果您支持 21 岁以下的 API 级别,您的 Application
class 应该从支持库扩展 MultiDexApplication
。
class MyApplication extends MultiDexApplication
如果您没有自定义 Application
class,那么您应该直接将 MultiDexApplication class 添加到您的清单中
<application
android:name="android.support.multidex.MultiDexApplication">
</application>
Goodlife 又来帮忙了。
将此行添加到扩展应用程序的 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()
);
}
MultiDex.install(this);
这可以解决问题。
如果您的应用程序从 Application 扩展,则在 Application 中覆盖 attachBaseContext 即
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
还需要添加依赖
compile 'com.android.support:multidex:1.0.1'
我所做的就是更新应用级别 gradle 文件中的编译库。
compile 'com.android.support:multidex:1.0.0'
我也更新了
compile 'com.android.support:multidex:1.0.1'
对我来说效果很好。
也许这对某人有帮助。
是的,更新到 multidex 1.0.2
并将 Mulitidex.install(this) 添加到 class 扩展应用程序
将 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.access00(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 构建工具版本是 22.0.1
。以前有人遇到过这个问题吗?
如果您支持 21 岁以下的 API 级别,您的 Application
class 应该从支持库扩展 MultiDexApplication
。
class MyApplication extends MultiDexApplication
如果您没有自定义 Application
class,那么您应该直接将 MultiDexApplication class 添加到您的清单中
<application
android:name="android.support.multidex.MultiDexApplication">
</application>
Goodlife 又来帮忙了。 将此行添加到扩展应用程序的 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()
);
}
MultiDex.install(this);
这可以解决问题。
如果您的应用程序从 Application 扩展,则在 Application 中覆盖 attachBaseContext 即
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
还需要添加依赖
compile 'com.android.support:multidex:1.0.1'
我所做的就是更新应用级别 gradle 文件中的编译库。
compile 'com.android.support:multidex:1.0.0'
我也更新了
compile 'com.android.support:multidex:1.0.1'
对我来说效果很好。 也许这对某人有帮助。
是的,更新到 multidex 1.0.2 并将 Mulitidex.install(this) 添加到 class 扩展应用程序