java.lang.NoSuchMethodError: Нет статического метода getFont(Landroid/content/Context;ILandroid/util/TypedValue;ILandroid/widget/TextView;)

После того, как я обновил свою Android Studio до 3.0, я получаю No static method getFont() ошибка. Проект, над которым я работаю, находится на github, https://github.com/ik024/GithubBrowser

// Top-level build file where you can add configuration options common 
to all sub-projects/modules.

buildscript {
repositories {
    jcenter()
    maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.0.0'
    classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-SNAPSHOT'
}
}

allprojects {
repositories {
    jcenter()
    maven { url 'https://maven.google.com' }
    maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
}

ext{
    arch_version = "1.0.0-alpha9"
    support_version = "26.0.2"
    dagger_version = "2.11"
    junit_version = "4.12"
    espresso_version = "2.2.2"
    retrofit_version = "2.3.0"
    mockwebserver_version = "3.8.0"
    apache_commons_version = "2.5"
    mockito_version = "1.10.19"
    constraint_layout_version = "1.0.2"
    timber_version = "4.5.1"
    butterknife_version = "9.0.0-SNAPSHOT"
    rxbinding_version = "2.0.0"
    retrofit_version = "2.3.0"
    okhttp_version = "3.6.0"
    rxjava2_adapter_version = "1.0.0"
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}

приложение Gradle

apply plugin: 'com.android.application'
apply plugin: 'com.jakewharton.butterknife'

android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
    applicationId "com.ik.githubbrowser"
    minSdkVersion 17
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
packagingOptions {
    exclude 'META-INF/rxjava.properties'
}

testOptions {
    unitTests.returnDefaultValues = true
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])

compile "com.android.support.constraint:constraint-layout:$constraint_layout_version"

compile "com.android.support:appcompat-v7:$support_version"
compile "com.android.support:recyclerview-v7:$support_version"
compile "com.android.support:cardview-v7:$support_version"
compile "com.android.support:design:$support_version"
compile "com.android.support:support-v4:$support_version"

compile "android.arch.persistence.room:runtime:$arch_version"
compile "android.arch.lifecycle:runtime:$arch_version"
compile "android.arch.lifecycle:extensions:$arch_version"
compile "android.arch.persistence.room:rxjava2:$arch_version"

compile "com.squareup.retrofit2:retrofit:$retrofit_version"
compile "com.squareup.retrofit2:converter-gson:$retrofit_version"
compile "com.squareup.retrofit2:adapter-rxjava:$retrofit_version"
compile "com.jakewharton.retrofit:retrofit2-rxjava2-adapter:$rxjava2_adapter_version"

compile "com.squareup.okhttp3:okhttp:$okhttp_version"
compile "com.squareup.okhttp3:logging-interceptor:$okhttp_version"


compile "com.jakewharton.timber:timber:$timber_version"
compile "com.jakewharton:butterknife:$butterknife_version"
compile "com.jakewharton.rxbinding2:rxbinding:$rxbinding_version"

compile "com.google.dagger:dagger:$dagger_version"
compile "com.google.dagger:dagger-android:$dagger_version"
compile "com.google.dagger:dagger-android-support:$dagger_version"

testCompile "junit:junit:$junit_version"
testCompile "com.squareup.okhttp3:mockwebserver:$mockwebserver_version"
testCompile("android.arch.core:core-testing:$arch_version", {
    exclude group: 'com.android.support', module: 'support-compat'
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.android.support', module: 'support-core-utils'
})

androidTestCompile "com.android.support:appcompat-v7:$support_version", {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.android.support', module: 'support-fragment'
    exclude group: 'com.android.support', module: 'support-core-ui'
}

androidTestCompile "com.android.support:recyclerview-v7:$support_version", {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.android.support', module: 'support-fragment'
    exclude group: 'com.android.support', module: 'support-core-ui'
}

androidTestCompile "com.android.support:support-v4:$support_version", {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.android.support', module: 'support-fragment'
    exclude group: 'com.android.support', module: 'support-core-ui'
}

androidTestCompile "com.android.support:design:$support_version", {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.android.support', module: 'support-fragment'
    exclude group: 'com.android.support', module: 'support-core-ui'
}

androidTestCompile("com.android.support.test.espresso:espresso-core:$espresso_version", {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.google.code.findbugs', module: 'jsr305'
})

androidTestCompile("com.android.support.test.espresso:espresso-contrib:$espresso_version", {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.google.code.findbugs', module: 'jsr305'
    exclude group: 'com.android.support', module: 'support-fragment'
    exclude group: 'com.android.support', module: 'support-core-ui'
})

androidTestCompile("android.arch.core:core-testing:$arch_version", {
    exclude group: 'com.android.support', module: 'support-annotations'
})

androidTestCompile 'org.mockito:mockito-android:2.7.15', {
    exclude group: 'com.android.support', module: 'support-annotations'
}

annotationProcessor "com.google.dagger:dagger-android-processor:$dagger_version"
annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version"
annotationProcessor "android.arch.persistence.room:compiler:$arch_version"
annotationProcessor "android.arch.lifecycle:compiler:$arch_version"
annotationProcessor "com.jakewharton:butterknife-compiler:$butterknife_version"


compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.0.2'

}

Ошибка:

Неустранимое исключение: основной процесс: com.ik.githubbrowser, PID: 4248 java.lang.NoSuchMethodError: Нет статического метода getFont(Landroid/content/Context;ILandroid/util/TypedValue;ILandroid/widget/TextView;)Landroid/graphics/Typeface; в классе Landroid/support/v4/content/res/ResourcesCompat; или его суперклассы (объявление 'android.support.v4.content.res.ResourcesCompat' отображается в /data/app/com.ik.githubbrowser-YvwoGrxR8QaUEZ3IEqFVLQ==/split_lib_dependencies_apk.apk) в android.support.v7.TintTypedArray.getFont(TintTypedArray.java:119) в android.support.v7.widget.AppCompatTextHelper.updateTypefaceAndStyle(AppCompatTextHelper.java:208) в android.support.vappt.apps.appy.AmpTextApp с расширением:71) на android.support.v7.widget.AppCompatTextView.(AppCompatTextView.java:67) на android.support.v7.widget.Toolbar.setTitle(Toolbar.java:753) на android.support.v7.widget.ToolbarWidget.setTitleInt(ToolbarWidgetWrapper.java:261) в android.support.v7.widget.ToolbarWidgetWrapper.setWindowTitle(ToolbarWidgetWrapper.java:243) в android.support.v7.widget.ActionBarOverlayLayout.setWindowTitle(ActionBarOverlayLayout.java:621) в android.support.v7.app.AppCompatDelegateImplImpdIpp.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:328) в android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegate7.mpA:139) в com.ik.githubbrowser.ui.search_user.SearchUserActivity.onCreate(SearchUserActivity.java:49) в android.app.Activity.performCreate(Activity.java:6975) в android.app.Instrumentation.callActivityOnCreate(Инструментарий. Java:1213) на android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770) на android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) на android.app.ActivityThread.-wrap11(неизвестный источник:0) в android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) на android.os.Handler.dispatchMessage(Handler.java:105) на android.os.Looper.loop(Looper.java:164) на android.app.ActivityThread.main(ActivityThread.java:6541) на java.lang.reflect.Method.invoke(собственный метод) на com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

14 ответов

Решение

Исправьте res/values ​​/styles.xml и Manifest.xml следующим образом: это решение протестировано, и не забудьте очистить и собрать:

1.Manifest.xml

изменить тему HomeActivity на:

        <activity
        android:name=".ui.home.HomeActivity"
        android:theme="@style/Base.Theme.AppCompat.Light" />
    <activity android:name=".BaseActivity"></activity>

2. res/values ​​/styles.xml Сделайте так, чтобы все ваши темы начинались с Base:styles.xml будет так:

<resources>

<!-- Base application theme. -->
<!--<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">-->

<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">


<!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar" parent="Base.Theme.AppCompat.Light">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="Base.ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="Base.ThemeOverlay.AppCompat.Light" />

Подробное объяснение по запросу: Theme.AppCompat.Light.DarkActionBar является подклассом суперкласса Base тем не мение. Ctrl+ клик (Android Studio) на нем, и вы попадете к источнику:

<style name="Theme.AppCompat.Light.DarkActionBar" parent="Base.Theme.AppCompat.Light.DarkActionBar" />

3. GithubBrowser-Master.gradle

делать support_version = "27.0.0"и не support_version = "26.0.2

4.app.gradle:

compileSdkVersion 27
    buildToolsVersion '27.0.0'

и не

   compileSdkVersion 26
buildToolsVersion '26.0.2'

Это работа для меня

    buildToolsVersion "27.0.3"

а также

dependencies {
compile 'com.android.support:appcompat-v7:27.0.0'
compile 'com.android.support:design:27.0.0'
compile 'com.android.support:support-v4:27.0.0'
compile 'com.android.support:support-v13:27.0.0'
}

В моем случае я использовал Android-KTX: implementation 'androidx.core:core-ktx:0.1' в проекте Kotlin, и это было причиной ошибки. Я просто удалил его из build.gradle в качестве зависимости.

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

Измените версию SDK для сборки на 27 и buildToolsVersion на 27.0.3

compileSdkVersion 27

buildToolsVersion "27.0.3"

Добавьте библиотеки поддержки версии 27.1.1.

скомпилируйте 'com.android.support:recyclerview-v7:27.1.1'

скомпилируйте 'com.android.support:cardview-v7:27.1.1'

скомпилируйте 'com.android.support:appcompat-v7:27.1.1'

а затем синхронизировать проект.

Это оно.

У меня была та же проблема, исправленная с помощью простого изменения appcompat, дизайна и переработчика для этих valeus:

implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.android.support:design:27.0.2'
implementation 'com.android.support:recyclerview-v7:27.0.2'

и снова синхронизировать Gradle

Убедитесь, что ваши comileSdkVersion и targetSdkVersion должны совпадать:

Версии Comile и SDK

а также обновите ваши зависимости до последней версии, синхронизируйте проект и запустите его. это помогло мне решить проблему.

зависимости

Версия всех зависимостей должна быть одинаковой с compileSdkVersion. поэтому приведенный ниже код в build.gradle(module) у меня работает.

android {

     compileSdkVersion 26

 ...

dependencies {

implementation 'com.android.support:appcompat-v7:26.0.2'

implementation 'com.android.support:recyclerview-v7:26.0.2'

implementation 'com.android.support:cardview-v7:26.0.2'


...

В моем случае эта проблема возникла из-за комбинации библиотек Glide и Appcompat (версии не поддерживают друг друга).

Итак, вот что сработало для меня (на уровне приложения build.gradle)-

implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.github.bumptech.glide:glide:4.8.0'

Надеюсь, это кому-нибудь поможет.

CompileSdkVersion 26 иногда выдает эту ошибку. Чтобы решить эту проблему, обновите compileSdkVersion и targetSdkVersion до 27 в файле app.gradle. Также измените соответствующие зависимости в разделе зависимостей. Вам не нужно указывать buildToolsVersion для этого.

Решение действительно простое... мне просто нужно изменить инструмент сборки на 27.0.2 И все поддерживают версию библиотеки до 27.0.2 Bingo.. ошибка решена

Просто измените тему активности в манифесте на любой, например:

android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"

Загрузить gradle!

путь к классам 'com.android.tools.build:gradle:3.3.1'

Для меня проблема была вызвана одной из зависимостей моего приложения, использующей более высокую версию библиотеки поддержки Android, чем та, от которой я зависел. Если вы пока не хотите обновляться до последней версии, вы можете принудительно использовать свою версию библиотеки.

Чтобы увидеть, какая зависимость использует более новую версию, вы можете запустить: ./gradlew app:dependencies и искать com.android.support случаи, которые объявляют версию, отличную от используемой вами. Например:

./gradlew app:dependencies \
  | grep com.android.support \
  | grep -vE "constraint-layout|support.test|multidex|->|26.1.0"

должен показать вам зависимости, которые используют версию, отличную от 26.1.0, (Android Studio также должна привести пример конфликта зависимостей во всплывающей подсказке для некоторых com.support.android зависимости, перечисленные в вашем build.gradle)

В моем случае это было com.android.support:support-compat:27.1.0 (а также support-annotations), так что запустите:

./gradlew app:dependencyInsight \
  --configuration <YOUR_BUILD_VARIANT>CompileClasspath
  --dependency support-compat

Чтобы увидеть, от чего зависит библиотека 27.1.0 версия support-compat, (Заменить <YOUR_BUILD_VARIANT> с одним из ваших вариантов сборки, например debug).

В моем случае это было:

com.android.support:support-compat:27.1.0 (conflict resolution)
\--- androidx.core:core-ktx:0.3
     \--- devDebugCompileClasspath

и заменив:

implementation 'androidx.core:core-ktx:0.3'

с:

implementation ('androidx.core:core-ktx:0.3') {
    exclude module: 'support-annotations'
    exclude module: 'support-compat'
}

исправил проблему для меня.

Всякий раз, когда возникает эта ошибка, просто обновите buildtools и поддержите зависимости до более новой версии. Это решит проблему. Имейте в виду, что все зависимости поддержки должны быть одной и той же версии

buildToolsVersion '28.0.2'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'

Я попытался найти ответ на этот вопрос, но в моем случае это была моя конфигурация:

android {
    compileSdkVersion 26
     defaultConfig {
        applicationId "com.jorgesys.gifanimated"
        minSdkVersion 14
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

Чтобы решить эту проблему, я просто добавляю определение buildToolsVersion и это работает!

   buildToolsVersion "26.0.2"

Вероятно, необходимо, чтобы наша версия инструментов сборки была такой же, как версия библиотек поддержки.

Вот мой ответ, возможно, это другой сценарий, но я получил эту ошибку.

Я создавал приложение для музыкального проигрывателя, и я добавил следующую библиотеку в свой файл приложения.

implementation 'com.google.android.exoplayer:exoplayer:2.8.0'

Я следовал этому руководству по интеграции ExoPlayer в мое приложение. Я изменил эту версию библиотеки с 2.8.0 до 2.6.0, и она работала нормально.

Я надеюсь, что это помогает кому-то.

Другие вопросы по тегам