java.lang.NoClassDefFoundError
中的 Android 5.1.1
但我在6.0.1
以下是类,其中包含错误:
public class DuelsTextView extends AppCompatTextView {
int fontType;
public DuelsTextView(Context context) {
super(context);
init(null);
}
public DuelsTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init(attrs);
}
public DuelsTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(attrs);
}
public void init(AttributeSet attrs) {
if (attrs != null) {
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.DuelsTextView);
fontType = a.getInteger(R.styleable.DuelsTextView_font_type, 0);
}
try {
Typeface myTypeface = null;
if (fontType == 0) {
myTypeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/BreeSerif-Regular.ttf");
} else if (fontType == 1) {
myTypeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/MarkoOne-Regular.ttf");
}
this.setTypeface(myTypeface);
} catch (Exception e) {
e.printStackTrace();
}
}
}
以下是 gradle 文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion '25.0.0'
defaultConfig {
applicationId "com.adamvarhegyi.duelsofcodrer"
minSdkVersion 17
targetSdkVersion 25
versionCode 1
versionName "1.0"
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
repositories {
mavenCentral()
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile('com.android.support:appcompat-v7:25.0.1') {
exclude module: 'support-v4'
}
compile('com.android.support:recyclerview-v7:25.0.1')
compile('com.makeramen:roundedimageview:2.2.1')
compile('org.apache.commons:commons-lang3:3.4')
compile('de.hdodenhof:circleimageview:2.1.0')
}
如果我将扩展名更改为简单TextView
,那么它的工作正常,但 android studio建议我必须使用AppCompatTextView
进行自定义视图。
为什么会这样?我应该修改什么?
答案 0 :(得分:4)
更改这些依赖项
compile('com.android.support:appcompat-v7:25.0.1') {
exclude module: 'support-v4'
}
compile('com.android.support:recyclerview-v7:25.0.1')
以强>
compile('com.android.support:appcompat-v7:25.0.0')
compile('com.android.support:recyclerview-v7:25.0.0')
不知道为什么要排除v4,但如果不是出于某种原因我会保留它。
不知道为什么会发生这种情况,但最近发生在我身上并修复了将buildToolsVersion
与支持库版本匹配的问题。
答案 1 :(得分:0)
我怀疑该问题与使用旧版支持库或排除support-v4
模块有关。此外,compile
配置现在为deprecated,应由implementation
或api
替换。
您的最终gradle配置应如下所示
implementation 'com.android.support:appcompat-v7:26.0.1'
implementation 'com.android.support:recyclerview-v7:26.0.1'
最后,确保再次测试/不排除support-v4
模块。